각 노드가 0에서 9까지의 단일 숫자를 포함하는 이진 트리가 있다고 가정합니다. 이제 루트에서 잎까지의 각 경로는 숫자를 순서대로 숫자로 나타냅니다. 트리의 모든 경로가 나타내는 숫자의 합을 찾아야 합니다. 따라서 입력이 다음과 같으면 출력은 46(4 → 6), 432(4 → 3 → 2), 435(4 → 3 → 5)로 680이 되며 합계는 913입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − solve() 함수를 정의합니다. 이것은 루트를 취합니다. string:=공백 문자열 root.left가 아닌 root
이진 행렬이 있다고 가정합니다. 여기서 1은 육지를 나타내고 0은 물을 나타냅니다. 우리가 알다시피 섬은 주변이 물로 둘러싸인 함께 그룹화 된 1의 그룹입니다. 완전히 둘러싸인 섬의 수를 찾아야 합니다. 따라서 입력이 다음과 같으면 세 개의 섬이 있기 때문에 출력은 2가 되지만 그 중 두 개는 완전히 둘러싸여 있습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − dfs() 함수를 정의합니다. i, j i와 j가 행렬의 범위가 아니면 거짓을 반환 행렬[i,j]가 0과 같으면 참 반환 행렬[i, j] :=0
숫자 n이 있고 방에 n개의 스위치가 있고 모든 스위치가 꺼져 있다고 가정합니다. 이제 다음과 같이 스위치를 뒤집는 n명의 사람들 - 사람 1은 1의 배수인 모든 스위치를 뒤집습니다(따라서 모든 스위치). 사람 2는 2의 배수(2, 4, 6, ...)인 스위치를 뒤집습니다. 사람 i는 i의 배수인 스위치를 뒤집습니다. 마지막에 켜질 스위치의 수를 찾아야 합니다. 따라서 입력이 n =5와 같으면 출력은 2가 됩니다. 처음에는 모두 꺼져 [0, 0, 0, 0, 0]이고 Person 1은 모두 [1, 1, 1, 1, 1]을 뒤집었
투표라는 문자열 목록이 있다고 가정합니다. 여기에서 각 항목은 소문자로 되어 있고 가장 높은 선호도에서 가장 낮은 선호도 순으로 후보자에 대한 투표를 나타냅니다. 여기에서 후보자의 순위는 가장 높은 선호도에서 얻은 표의 수에 따라 먼저 결정됩니다. 이제 동점이 있으면 다음으로 높은 선호도에 대해 받은 표 수 등을 확인합니다. 여전히 동점이 있으면 알파벳순으로 순위가 매겨집니다. 그래서 우리는 가장 높은 순위에서 가장 낮은 순위로 팀의 최종 순위를 찾아야 합니다. 따라서 입력이 vote =[zyx, zxy, xyz]와 같으면 z가
각 노드의 값이 색상을 나타내는 이진 트리가 있다고 가정합니다. 트리에는 최대 2가지 색상이 있습니다. 연결된 두 노드의 색상이 동일하지 않도록 노드의 색상을 여러 번 바꿀 수 있는지 확인해야 합니다. 따라서 입력이 다음과 같으면 그러면 우리가 얻을 수 있는 대로 출력이 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 색상 :=빈 지도 prop :=빈 지도 dfs() 함수를 정의합니다. 노드 및 플래그가 필요합니다. 노드가 null이면 반환 색상[노드 값] :=색상[노드 값] + 1 소품[
이진 트리와 다른 값 k가 있다고 가정하고 하위 자식 경로에 대한 고유한 노드의 수를 찾아야 하며 합계는 k입니다. 따라서 입력이 다음과 같으면 k =5이면 경로가 [2, 3] 및 [1, 4]이므로 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − count :=지도는 처음에 키 0에 대해 값 1을 보유합니다. ans :=0, 접두사 :=0 dfs() 함수를 정의합니다. 노드가 필요합니다. 노드가 null이 아니면 접두사 :=접두사 + 노드 값 ans :=ans + (count[prefix - t
세 가지 유형의 세포가 있는 숲을 나타내는 2D 행렬이 있다고 가정합니다. 0 빈 세포 1 나무 세포 2 불 세포에 있는 나무 매일 인접한 나무가 있을 때 나무에 불이 붙습니다. 대각선) 나무가 불타고 있습니다. 우리는 모든 나무에 불이 붙는 데 걸리는 일수를 찾아야 합니다. 가능하지 않으면 -1을 반환합니다. 따라서 입력이 다음과 같으면 1 2 1 1 0 1 1 1 1 그러면 출력은 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ans :=0 twos :=새
4개의 숫자 목록이 있고 각 숫자는 1에서 9까지의 범위에 있으며 고정된 순서로 나열되어 있다고 가정합니다. 이제 숫자 사이에 +, -, *, /(/는 정수 나누기를 나타냄) 연산자를 넣고 대괄호로 묶으면 값 24가 나올 수 있는지 확인해야 합니다. 따라서 입력이 nums =[5, 3, 6, 8, 7]과 같으면 출력은 (5 * 3) - 6 + (8 + 7) =24와 같이 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − recur() 함수를 정의합니다. 시간이 걸립니다 답변 :=새 목록 0 ~ arr -
모든 숫자가 0에서 8 사이이고 반복되는 숫자가 없는 3x3 보드가 있다고 가정합니다. 이제 우리는 0을 4개의 이웃 중 하나로 바꿀 수 있으며 모든 정렬된 시퀀스를 얻기 위해 0을 해결하려고 하므로 목표에 도달하는 데 필요한 최소 단계 수를 찾아야 합니다. 따라서 입력이 다음과 같으면 3 1 2 4 7 5 6 8 0 그러면 출력은 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − find_next() 함수를 정의합니다. 노드가 필요합니다. moves :=각 값 {
우리가 n 길이 목록의 위치 0에 있고 각 단계에서 오른쪽으로 한 위치 또는 왼쪽으로 한 위치(경계를 초과하지 않음) 이동하거나 동일한 위치에 머무를 수 있다고 가정합니다. 이제 우리가 정확히 k 단계를 걸을 수 있다면 우리가 걸을 수 있는 고유한 걷기 수를 찾아 인덱스 0으로 다시 도달해야 합니다. 답이 매우 크면 mod 10^9 + 7을 반환합니다. 따라서 입력이 n =7 k =4와 같으면 출력은 9가 됩니다. 동작은 다음과 같습니다. [오른쪽, 오른쪽, 왼쪽, 왼쪽], [오른쪽, 왼쪽, 오른쪽, 왼쪽], [머물고 있어,
동일한 크기의 목록이 두 개 있다고 가정합니다. 이 목록은 마감일과 학점이며 코스 할당을 나타냅니다. 여기서 Deadline[i]은 과제 i의 마감일을 나타내고 credits[i]는 과제 i에 대해 받는 학점의 양을 나타냅니다. 과제를 완료하는 데 하루가 있으며 마감일 이전이나 당일에 완료할 수 있습니다. 동시에 여러 과제를 수행할 수 없습니다. 일부 과제를 완료하여 얻을 수 있는 최대 크레딧을 찾아야 합니다. 따라서 입력이 마감일 =[1, 2, 2, 2] 크레딧 =[4, 5, 6, 7]과 같으면 출력은 18이 됩니다. 0일에 크
nums라는 숫자 목록이 있고 오름차순으로 정렬되어 있다고 가정하고 두 개의 인접한 값 사이의 최대 차이가 가능한 한 최소가 되도록 목록에서 k 값을 삭제하고 마지막으로 차이를 찾아야 합니다. 따라서 입력이 nums =[15, 20, 30, 400, 1500] k =2와 같으면 출력은 10이 됩니다. 마치 [400, 1500]을 제거하여 20과 30의 차이를 구하는 것과 같습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − abs_diff :=nums의 모든 연속 요소의 차이 목록 dp() 함수를 정의합니다. 이것은
숫자 n이 있다고 가정하고 모든 숫자가 홀수인 다음으로 가장 가까운 값을 찾아야 합니다. n에 가장 가까운 값으로 묶인 값이 두 개 있는 경우 더 큰 값을 반환합니다. 따라서 입력이 n =243과 같으면 출력은 199가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − first_even :=-1 s :=n을 문자열로 l :=s의 크기 0~l 범위의 i에 대해 s[i]가 짝수이면 first_even :=나 루프에서 나오다 first_even이 -1과 같으면 반환 n big :=1 + s의 숫자 값[인덱
두 개의 문자열 S와 T가 있고 서로의 아나그램이라고 가정합니다. T와 같게 하려면 S에 필요한 최소 스왑 수를 찾아야 합니다. 따라서 입력이 S =kolkata T =katloka와 같은 경우 출력은 3이 됩니다. 이 순서로 [katloka(주어진), kotlaka, koltaka, kolkata]를 바꿀 수 있습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − util() 함수를 정의합니다. S, T, i가 필요합니다. =S의 크기이면 0을 반환 S[i]가 T[i]와 같으면 return util(S, T, i
히스토그램에서 막대의 높이를 나타내는 숫자 목록이 있다고 가정합니다. 막대 아래에서 형성할 수 있는 가장 큰 직사각형의 면적을 찾아야 합니다. 따라서 입력이 nums =[3, 2, 5, 7]과 같은 경우 그러면 출력은 10이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − stk :=스택 및 초기에 -1 삽입 높이 끝에 0 삽입 ans :=0 0에서 높이의 크기 범위에 있는 i에 대해 다음을 수행합니다. hits[i]
이진 행렬이 있다고 가정하고 주어진 행렬에서 1의 가장 큰 제곱을 찾아야 합니다. 따라서 입력이 다음과 같으면 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 그러면 출력은 16이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − res :=0 행렬 크
이진 트리가 있고 거의 이진 검색 트리라고 가정합니다. 두 노드의 값만 교환됩니다. 이를 수정하고 이진 검색 트리를 반환해야 합니다. 따라서 입력이 다음과 같으면 그러면 출력은 이 문제를 해결하기 위해 다음 단계를 따릅니다. − prev_node :=null, min_node :=null, max_node :=null found_one :=거짓 루트의 중위 순회에서 각 노드에 대해 다음을 수행합니다. prev_node가 null이 아니면 노드 값
이진 트리가 있다고 가정합니다. 바이너리 트리에서 가장 긴 경로를 찾아야 합니다. 따라서 입력이 다음과 같으면 가장 긴 연속 시퀀스가 [2, 3, 4, 5, 6]이므로 출력은 5가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 루트가 null이면 0을 반환 최대 경로:=0 helper() 함수를 정의합니다. 노드가 필요합니다. inc :=1, dec :=1 노드의 왼쪽이 null이 아니면 [left_inc, left_dec] :=도우미(노드 왼쪽) 그렇지 않으면 [left_inc, left_de
각 행이 주어진 상자의 높이와 너비를 나타내는 상자 목록이 있다고 가정합니다. 첫 번째 상자가 두 번째 상자보다 작으면 다른 상자에 상자를 넣을 수 있습니다(너비와 높이가 모두 다른 상자보다 작을 때). 상자에 넣을 수 있는 최대 상자 수를 찾아야 합니다. 따라서 입력이 다음과 같으면 너비 높이 12 12 10 10 6 6 5 10 그러면 [12, 12] 상자에 넣을 수 있는 [10, 10] 안에 상자 [6, 6]을 맞출 수 있으므로 출력은 3이 됩니다. 이 문제를 해결하기 위해
단어 목록과 공백이 없는 다른 문자열이 있다고 가정합니다. 단어 목록을 사용하여 문자열을 분해할 수 있는지 여부를 확인해야 합니다. 따라서 입력이 단어 =[love, python, we, programming, language] s =welovepythonprogramming과 같으면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − words :=모든 고유한 단어의 새로운 세트 rec() 함수를 정의합니다. 이것은 내가 걸릴 것입니다 i가 s의 크기와 같으면 참 반환 acc :=빈 문자열 i