이진 트리가 있다고 가정합니다. 이것을 단일 연결 목록으로 변환해야 합니다. 따라서 입력이 다음과 같으면 그러면 출력은 이 문제를 해결하기 위해 다음 단계를 따릅니다. 이전 서버 :=null 입력으로 루트를 취하는 재귀 함수 solve()를 정의하십시오. 루트가 null이면 반환 해결(루트 오른쪽) 해결(루트 왼쪽) 루트의 오른쪽 :=이전, 루트의 왼쪽 :=null 이전 :=루트 더 나은 이해를 위해 다음 구현을 살펴보겠습니다. 예시 #include <bits/stdc++
2s, 1s 및 0s의 세 가지 다른 값으로 구성된 2D 행렬이 있다고 가정합니다. 여기서 2는 적을, 1은 벽을, 0은 빈 셀을 나타냅니다. 우리는 하나의 폭탄으로 죽일 수 있는 최대의 적을 찾아야 합니다. 폭탄은 벽에 부딪힐 때까지 심은 지점에서 같은 행과 열에 있는 모든 적을 죽입니다. 그리고 우리는 공백에만 폭탄을 놓을 수 있습니다. 따라서 입력이 다음과 같으면 녹색 상자에 폭탄을 놓아 최대 3명의 적을 죽일 수 있으므로 출력은 3이 됩니다. 렛 :=0 n :=그리드의 행 개수, m :=그리드의 열 개수
시간과 분이라는 두 개의 값이 있다고 가정합니다. 시침과 분침 사이에 형성된 작은 각도를 찾아야 합니다. 따라서 입력이 시 =12분 =45와 같으면 출력은 112.5가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. h =12이면 h :=0을 설정합니다. m =60이면 m :=0으로 설정 hAngle :=0.5 * (60h) + m mAngle:=6m ret :=|hAngle - mAngle| ret의 최소값을 반환하고 (360 – ret)더 나은 이해를 위해 다음 구현을 살펴보겠습니
1이 통신 타워를 나타내고 0이 빈 셀을 나타내는 2D 이진 행렬이 있다고 가정합니다. 타워는 다음과 같은 방식으로 통신할 수 있습니다. 1. 타워 A와 타워 B가 같은 행이나 열에 있는 경우 서로 통신할 수 있습니다. 2. 타워 A가 타워 B와 대화할 수 있고 B가 C와 대화할 수 있다면 A는 C와 대화할 수 있습니다(전이 속성). 우리는 거기에 있는 총 타워 그룹의 수를 찾아야 합니다(여기서 그룹은 서로 대화할 수 있는 타워 목록입니다). 따라서 입력이 다음과 같으면 1 1 0 0 0 1 1 0 1 이 문제를 해결하
소문자로 된 문자열이 있고 비용이라는 음수가 아닌 값의 목록도 있다고 가정하고 문자열과 목록의 길이는 같습니다. costcosts[i]에 대한 문자 s[i]를 삭제할 수 있으며, 그런 다음 s[i]와 cost[i]가 모두 제거됩니다. 연속적으로 반복되는 모든 문자를 삭제하기 위한 최소 비용을 찾아야 합니다. 따라서 입력이 s =xxyyx nums =[2, 3, 10, 4, 6]과 같으면 총 비용에 대해 s[0]과 s[3]을 삭제할 수 있으므로 출력은 6이 됩니다. 2 + 4 =6. 이 문제를 해결하기 위해 다음 단계를 따릅니다.
수 n이 있다고 가정하면 n!의 후미 0의 수를 찾아야 합니다. 따라서 입력이 n =20과 같으면 출력은 20과 같이 4가 됩니다! =2432902008176640000 이 문제를 해결하기 위해 다음 단계를 따릅니다. 세트 수 :=0 1, 업데이트 i :=i * 5, 수행 개수 :=개수 + (n /i) 반환 횟수 더 나은 이해를 위해 다음 구현을 살펴보겠습니다. 예시 #include <iostream> #include <cmath> #define MAX 20 using name
정수 배열 A가 있다고 가정합니다. 두 개의 겹치지 않는 하위 배열에서 요소의 최대 합을 찾아야 합니다. 이 하위 배열의 길이는 L과 M입니다. 그래서 더 정확하게 말하면, 우리는 다음 중 가장 큰 V를 찾아야 합니다. V =(A[i] + A[i+1] + ... + A[i+L-1]) + (A[j] + A[j+1] + ... + A[j+ M-1]) 및 - 0 <=i
무한한 수의 선을 고려한다고 가정합니다. 여기에서 i번째 스톤의 위치는 배열 스톤으로 지정되고 스톤[i]은 i번째 스톤 위치를 나타냅니다. 스톤은 가장 작거나 가장 큰 위치에 있는 경우 엔드포인트 스톤입니다. 이제 각 턴에서 엔드포인트 스톤을 집어 들고 비어 있는 위치로 이동하여 더 이상 엔드포인트 스톤이 되지 않도록 합니다. 스톤이 예를 들어 스톤 =[1,2,5]인 경우 위치 5에서 엔드포인트 스톤을 이동할 수 없습니다. 왜냐하면 0 또는 3과 같은 위치로 이동하면 해당 스톤이 여전히 엔드포인트 스톤으로 유지되기 때문입니다. .
이진 트리가 있고 루트 노드가 깊이 0에 있고 각 깊이 k 노드의 자식이 깊이 k+1에 있다고 가정합니다. 여기서 이진 트리의 두 노드는 깊이가 같지만 부모가 다른 경우 사촌이라고 합니다. 트리의 모든 값은 고유하며 트리에 있는 두 개의 서로 다른 노드의 x 및 y 값은 고유합니다. x, y 값에 해당하는 노드가 사촌인지 확인해야 합니다. 따라서 입력이 다음과 같으면 x =5, y =4이면 출력은 true가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 하나의 맵 정의 um 하나의 대기열 정의
그리드가 있다고 가정하고 여기 각 셀에는 세 가지 값 중 하나가 있을 수 있습니다. - 빈 셀의 경우 값 0; 신선한 오렌지의 경우 값 1, 썩은 오렌지의 경우 값 2. 1분마다 썩은 오렌지 옆에 있는 신선한 오렌지는 썩게 됩니다. 세포에 신선한 오렌지가 없을 때까지 경과해야 하는 최소 횟수를 찾아야 합니다. 이것이 불가능하면 -1을 반환합니다. 따라서 입력이 [[2,1,1],[1,1,0],[0,1,1]]과 같으면 출력은 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 분 :=0
흑백 픽셀로 구성된 그림이 있다고 가정하고 R행과 C열에 있는 검은색 픽셀의 수를 찾아야 합니다. 이는 다음 모든 규칙과 일치합니다. - R과 C는 정확히 N개의 검은색 픽셀을 포함합니다. C 열에 검은색 픽셀이 있는 모든 행의 경우 R 행과 정확히 같아야 합니다. 여기에서 그림은 흑백 픽셀 각각에 대해 B와 W로 구성된 2D 문자 배열로 표시됩니다. 입력이 다음과 같은 경우 - W 나 여 나 나 여 여 나 여 나 나 여 여 나 여 나 나 여 여 여 나 여 나 여 그리고 N =3이면 출력은 6이 됩니다
괄호와 정수로 구성된 문자열이 있다고 가정합니다. 우리는 그 문자열로부터 이진 트리를 구성해야 합니다. 전체 입력은 이진 트리를 나타냅니다. 0, 한 쌍 또는 두 쌍의 괄호가 뒤에 오는 정수를 보유합니다. 정수는 루트 값을 나타내며 한 쌍의 괄호에는 동일한 구조의 자식 바이너리 트리가 포함됩니다. 따라서 입력이 4(2(3)(1))(6(5))와 같으면 출력은 [3,2,1,4,5,6](중위 순회) 이 문제를 해결하기 위해 다음 단계를 따릅니다. − solve() 함수를 정의하면 s, idx,가 필요합니다. =크기가 s이
우리가 n개의 팀을 가지고 있고 우리가 항상 다소 약한 팀과 플레이하도록 다소 강한 팀을 배치한다고 가정합니다. 예를 들어 순위 1의 팀이 순위 n의 팀과 플레이하게 하는 것과 같이 이 전략은 대회를 더 흥미롭게 만드는 것입니다. 이제 우리는 문자열 형태로 그들의 최종 대회 경기를 찾아야 합니다. 이 팀은 초기 순위를 나타내는 1에서 n까지의 양의 정수 형태로 제공됩니다. 따라서 1순위가 가장 강한 팀이고 n순위가 가장 약한 팀입니다. 괄호와 쉼표를 사용하여 대회 팀 페어링을 나타냅니다. 페어링에는 괄호((, ))를, 파티션에는
이진 트리가 있다고 가정하고 루트에서 시작하여 시계 반대 방향으로 경계 값을 찾아야 합니다. 여기서 경계는 중복 노드 없이 왼쪽 경계, 잎, 오른쪽 경계를 순서대로 포함합니다. 왼쪽 경계는 루트에서 가장 왼쪽 노드까지의 경로입니다. 오른쪽 경계는 루트에서 가장 오른쪽 노드까지의 경로입니다. 루트에 왼쪽 하위 트리 또는 오른쪽 하위 트리가 없으면 루트 자체가 왼쪽 경계 또는 오른쪽 경계입니다. 따라서 입력이 다음과 같으면 그러면 출력은 [1,2,4,7,8,9,10,6,3]이 됩니다. 이 문제를 해결하기 위
n개의 정수가 있는 배열이 있다고 가정하고 다음 조건을 따르는 삼중항(i, j, k)이 있는지 찾아야 합니다. - 0
이진 트리가 있다고 가정합니다. 우리는 이진 트리에서 가장 긴 연속 경로의 길이를 찾아야 합니다. 여기서 경로는 증가하거나 감소할 수 있습니다. 예를 들어 [1,2,3,4]와 [4,3,2,1]은 모두 유효한 경로로 간주되지만 경로 [1,2,4,3]은 유효한 경로가 아닙니다. 그렇지 않으면 경로가 자식-부모-자식 순서일 수 있지만 반드시 부모-자식 순서일 필요는 없습니다. 따라서 입력이 다음과 같으면 가장 긴 연속 경로가 [1, 2, 3] 또는 [3, 2, 1]과 같으므로 출력은 3이 됩니다. 이 문제를 해결하기 위해 다음
문자열 목록이 있다고 가정하고 이러한 문자열을 루프로 함께 연결할 수 있습니다. 여기서 각 문자열에 대해 반전 여부를 선택할 수 있습니다. 가능한 모든 루프 중에서 루프를 절단한 후 사전순으로 가장 큰 문자열을 찾아야 합니다. 그러면 루프된 문자열이 일반 문자열이 됩니다. 특히 사전순으로 가장 큰 문자열을 찾으려면 다음 두 단계를 거쳐야 합니다. 모든 문자열을 하나의 루프로 연결합니다. 여기서 일부 문자열을 뒤집을 수도 있고 그렇지 않을 수도 있고 주어진 순서대로 연결할 수 있습니다. 루프의 임의의 위치에 하나의 절단 지점을
하나의 이진 행렬 M이 있다고 가정하면 해당 행렬에서 연속 행렬 중 가장 긴 줄을 찾아야 합니다. 선은 수평, 수직, 대각선 또는 역대각선일 수 있습니다. 따라서 입력이 다음과 같으면 0 1 1 0 0 1 1 0 0 0 0 1 그러면 출력은 3이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ret :=0 n :=M의 행 m :=M의 열 n x m x 4 차수의 3D 배열 dp 하나를 정의합니다. initialize i :=0의 경우, i
나무, 다람쥐, 견과류 몇 개가 있습니다. 위치는 2D 그리드의 셀로 표시됩니다. 당신의 목표는 다람쥐가 모든 견과류를 모아서 하나씩 나무 아래에 둘 수 있는 최소 거리를 찾는 것입니다. 다람쥐는 한 번에 최대 한 개의 너트만 먹을 수 있으며 인접한 셀로 위, 아래, 왼쪽, 오른쪽의 네 가지 방향으로 이동할 수 있습니다. 거리는 이동 횟수로 표시됩니다. 따라서 입력이 높이:5 너비:7 나무 위치:[2,2] 다람쥐:[4,4] 견과류:[[3,0], [2,5]]와 같은 경우 출력은 12가 됩니다. , 이 문제를 해결하기 위해 다음
n개의 프로세스가 있다고 가정합니다. 여기서 각 프로세스에는 PID 또는 프로세스 ID라는 고유한 ID가 있고 해당 PPID(상위 프로세스 ID)도 있습니다. 각 프로세스에는 하나의 상위 프로세스만 있지만 하나 이상의 하위 프로세스가 있을 수 있습니다. 이것은 트리 구조와 같습니다. 하나의 프로세스만 PPID =0을 가지며 이는 이 프로세스에 상위 프로세스가 없음을 의미합니다. 모든 PID는 고유한 양의 정수입니다. 두 개의 정수 목록을 사용하여 프로세스 목록을 나타냅니다. 첫 번째 목록에는 각 프로세스에 대한 PID가 포함되