nums라는 숫자 목록과 두 개의 값 x와 y가 있다고 가정하고 길이가 x와 y인 숫자에서 겹치지 않는 두 하위 목록의 최대 합을 찾아야 합니다. 따라서 입력이 nums =[3, 2, 10, -2, 7, 6] x =3 y =1과 같으면 길이가 3인 하위 목록으로 [3, 2, 10] 그리고 다른 하나는 [7]을 선택합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − P :=단일 요소가 0인 목록 A의 각 x에 대해 다음을 수행합니다. P 끝에 삽입(P + x의 마지막 요소) solve() 함수를 정의합니다. len1
2인용 게임의 게임 상태를 나타내는 이진 트리가 있다고 가정합니다. 모든 내부 노드는 0으로 채워지고 잎 값은 최종 점수를 나타냅니다. 참가자 1은 최종 점수를 최대화하려고 하고 참가자 2는 최종 점수를 최소화하려고 합니다. 플레이어 1은 항상 짝수 레벨의 노드에서 이동하고 플레이어 2는 항상 홀수 레벨에서 이동합니다. 두 플레이어가 최적의 상태로 플레이한다는 가정 하에 결과 점수로 이진 트리를 채워야 합니다. 따라서 입력이 다음과 같으면 그러면 출력은 이 문제를 해결하기 위해 다음 단계를 따릅니다. − helper(
A와 B라는 두 개의 숫자 목록이 있고 길이가 같다고 가정합니다. 이제 숫자 A[i]와 B[i]를 교환할 수 있는 작업을 수행할 수 있다고 가정합니다. 두 목록을 엄격하게 증가시키는 데 필요한 연산의 수를 찾아야 합니다. 따라서 입력이 A =[2, 8, 7, 10] B =[2, 4, 9, 10]인 경우 출력은 1이 됩니다. A에서 7을, B에서 9를 바꿀 수 있기 때문입니다. 그런 다음 목록은 모두 엄격하게 증가하는 목록인 A =[2, 8, 9, 10] 및 B =[2, 4, 7, 10]과 같습니다. 이 문제를 해결하기 위해 다음
nums라는 숫자 목록이 있고 이 두 쌍의 합 사이의 절대 차이가 최소화되도록 두 쌍의 숫자를 선택하려고 한다고 가정합니다. 따라서 입력이 nums =[3, 4, 5, 10, 7]과 같으면 이 쌍(3 + 7) - (4 + 5) =1을 선택할 수 있으므로 출력은 1이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. 거리:=새 목록 0에서 숫자 - 2의 크기 범위에 있는 i에 대해 i + 1 범위에서 nums - 1까지의 j에 대해, do 목록 삽입 [|nums[i] - nums[j]| , i, j] 거리 끝에서 목
nums라고 하는 숫자 목록이 있다고 가정하고 주어진 목록에서 최소 합 하위 시퀀스를 찾아야 하므로 세 개의 연속 숫자로 구성된 모든 그룹에 대해 하나 이상의 숫자가 선택됩니다. 주어진 목록의 길이가 3보다 작은 경우에도 숫자를 선택해야 합니다. 따라서 입력이 nums =[2, 3, 4, 5, 6, 7]과 같으면 2와 5를 선택할 수 있으므로 출력은 7이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. n :=숫자 크기 n이 0과 같으면 0을 반환 n이 1과 같으면 반환 번호[0] n이 2와 같으면 num
nums라는 숫자 목록이 있다고 가정합니다. 이 목록은 트리의 inorder traversal에서 리프 노드를 나타냅니다. 여기서 내부 노드는 2개의 자식을 가지며 그 값은 왼쪽 서브트리의 가장 큰 잎값과 오른쪽 서브트리의 가장 큰 잎값의 곱과 같습니다. 값의 최소 합으로 트리의 합을 찾아야 합니다. 따라서 입력이 nums =[3, 5, 10]과 같으면 출력은 83이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. res :=num에 있는 모든 요소의 합 1, do i :=숫자의 최소 요소 인덱스 0 그렇지 않
nums라는 숫자 목록과 또 다른 값 k가 있다고 가정합니다. 어떤 요소를 1씩 증가시키는 연산을 생각해 봅시다. 우리는 최대 k 번 수행할 수 있으며 얻을 수 있는 가장 자주 발생하는 수의 값을 찾아야 합니다. 솔루션이 둘 이상인 경우 가능한 가장 작은 수를 선택하십시오. 따라서 입력이 nums =[1, 0, 0, 0, 8, 8, 8, 8] k =8과 같으면 출력은 8이 됩니다. 1, 7배로 증가하여 8을 얻을 수 있기 때문입니다. 0을 1로 늘리면 [8, 1, 0, 0, 8, 8, 8, 8]이 됩니다. 따라서 결과는 8입니다.
여러 영화 상영에 대한 간격 목록이 있다고 가정하고(겹칠 수 있음) 모든 영화를 상영하는 데 필요한 최소 극장 수를 찾아야 합니다. 따라서 입력이 간격 =[[20, 65],[0, 40],[50, 140]]과 같으면 출력은 [20, 65]와 [0, 40]이 겹치므로 2가 됩니다. . [20, 65]와 [50, 140]도 겹치지만 [0, 40]과 [50, 140]은 겹치지 않습니다. 따라서 2개의 극장이 필요합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. t :=새 목록 각 간격 [a, b] 간격에 대해, do t 끝에
nums라고 하는 고유한 숫자 목록과 또 다른 숫자 k가 있다고 가정하면 합이 k가 되는 고유한 조합의 수를 찾아야 합니다. 조합을 만들 때 숫자를 재사용할 수 있습니다. 따라서 입력이 nums =[2, 4, 5] k =4와 같으면 [2, 2] 및 [4]와 같은 두 그룹을 만들 수 있으므로 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. table :=크기가 k + 1이고 0으로 채워진 목록 테이블[0] :=1 숫자 단위의 각 숫자에 대해 다음을 수행합니다. num ~ k 범위의 i에 대해 테이블[i]
숫자 n이 있다고 가정하고 사전순으로 정렬된 처음 n개의 숫자를 찾아야 합니다. 따라서 입력이 n =15와 같으면 출력은 [1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9] 이 문제를 해결하기 위해 다음 단계를 따릅니다. 카운트:=1 ans :=단일 요소 수가 있는 목록 as
숫자 n과 다른 값 k가 있다고 가정합니다. 이제 문자가 연속적으로 반복되지 않는 0, 1 및 2만 포함하는 문자열을 고려해 보겠습니다. 길이가 n인 문자열을 선택하고 사전순으로 가장 작은 k번째 문자열을 찾아야 합니다. k번째 문자열이 없으면 빈 문자열을 반환합니다. 따라서 입력이 n =4 k =2와 같으면 출력은 0120이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. s, k 및 last가 소요되는 solve() 메소드 정의 s가 0과 같으면 빈 문자열 반환 012의 각 문자 c에 대해 다음을 수행합니다.
숫자 n이 있다고 가정하고 모든 숫자가 감소하지 않는 n보다 작거나 같은 가장 큰 숫자를 찾아야 합니다. 따라서 입력이 n =221과 같으면 출력은 199가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. digits :=n의 모든 숫자가 포함된 목록 바운드:=null 숫자 범위 크기의 i에 대해 - 1에서 0까지, 수행 숫자[i] <숫자[i - 1]이면 바운드 :=나 숫자[i - 1] :=숫자[i - 1] - 1 bound가 null이 아니면 숫자 크기에 묶인 범위의 i에 대해 숫자[i] :=9 각
각 분수가 숫자(분자/분모)를 나타내는 개별 목록[분자, 분모]인 분수 목록이 있다고 가정합니다. 합이 1인 분수 쌍의 수를 찾아야 합니다. 따라서 입력이 분수 =[[2, 7],[3, 12],[4, 14],[5, 7],[3, 4],[1, 4]]인 경우 출력은 (2/7 + 5/7), (3/12 + 3/4), (3/4 + 1/4), (4/14 + 5/7)이 4쌍이므로 4가 됩니다. 1. 이 문제를 해결하기 위해 다음 단계를 따릅니다. d :=새 지도 ans :=0 각 분수 i에 대해 다음을 수행합니다. x :=i[분자] y :=i
목록 번호가 있고 두 개의 추가 값 k 및 target이 있다고 가정하고 크기가 k이고 평균 값 ≥ target인 하위 목록의 수를 찾아야 합니다. 따라서 입력이 nums =[1, 10, 5, 6, 7] k =3 target =6과 같으면 하위 목록 [1, 10, 7]의 평균 값이 6이고 출력은 2가 됩니다. [10, 5, 6]은 평균 7입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. 대상 :=대상 * k 합계:=0, 응답:=0 각 인덱스 i와 숫자 n에 대해 다음을 수행합니다. =k이면 합계 :=합 - 숫자[i -
nums라는 숫자 목록과 다른 값 대상이 있다고 가정하면 합이 target과 동일한 하위 목록의 수를 찾아야 합니다. 따라서 입력이 nums =[3, 0, 3] target =3과 같으면 합이 3인 하위 목록이 있으므로 출력은 4가 됩니다. [3], [3, 0], [0, 3], [3]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. temp :=빈 지도 온도[0] :=1 s :=0 ans :=0 0에서 숫자 크기 범위의 i에 대해 s :=s + nums[i] comp :=s - 대상 comp가 임시 상태이면 ans :=an
고유한 숫자 목록이 있다고 가정합니다. 목록을 오름차순으로 정렬하는 데 필요한 최소 스왑 수를 찾아야 합니다. 따라서 입력이 nums =[3, 1, 7, 5]와 같으면 출력은 2가 됩니다. 3과 1, 5와 7을 바꿀 수 있기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. sort_seq :=목록 번호 정렬 테이블:=새 지도 숫자 단위의 각 인덱스 i와 값 n에 대해 다음을 수행합니다. 테이블[n] :=나 스왑:=0 0~숫자 크기 범위의 i에 대해 n :=숫자[i] s_n :=sort_seq[i] s_i :=
이진 트리가 있다고 가정합니다. 우리는 유일한 자식 노드의 수를 찾아야 합니다. 우리가 알고 있듯이 노드 x는 부모가 x라는 정확히 하나의 자식을 가질 때 유일한 자식 노드라고 합니다. 따라서 입력이 다음과 같으면 8과 6이 유일한 자식이므로 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. 루트가 null이면 0을 반환 d :=이중 종료 대기열 d 끝에 루트 삽입 카운트:=0 d가 비어 있지 않은 동안 do current :=d의 왼쪽 요소 및 왼쪽 요소 삭제 현재 왼쪽이 null이 아니면 d에
num이라는 숫자 목록과 다른 값 k가 있다고 가정합니다. 이제 목록의 모든 요소에서 1을 뺄 수 있는 연산을 고려해 보겠습니다. 이 작업을 k번 수행할 수 있습니다. 이러한 작업을 k 수행한 후 목록에서 가능한 최소 최대값을 찾아야 합니다. 따라서 입력이 nums =[3, 4, 6, 5] k =6과 같으면 출력은 3이 됩니다. 4를 한 번, 6을 세 번, 5를 두 번 줄여 [3,3,3, 3]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. 역순으로 숫자 정렬 i :=0 curr :=nums[0] 0일 때 수행 i
[, | 및 ]와 같은 다른 문자와 소문자 알파벳 문자열이 있다고 가정합니다. 여기서 [a|b|c]는 a, b 또는 c가 가능성으로 선택될 수 있음을 나타냅니다. s가 나타낼 수 있는 모든 가능한 값을 포함하는 문자열 목록을 찾아야 합니다. 여기서 []는 중첩될 수 없으며 선택 항목의 수에 제한이 없습니다. 따라서 입력이 s =[d|t|l]im[e|s]와 같으면 출력은 [dime, dims, lime, lims, time이 됩니다. , 팀] 이 문제를 해결하기 위해 다음 단계를 따릅니다. s가 비어 있으면 빈 문자열이 있는 목
문자열 s가 있다고 가정하고 각 부분이 회문(palindrome)이 되도록 문자열을 분할할 수 있는 방법의 수를 찾아야 합니다. 따라서 입력이 s =xyyx와 같으면 [x, yy, x], [x, y, 와 같이 분할되므로 출력은 3이 됩니다. y, x], [xyyx]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. n :=s의 크기 table :=크기가 n + 1인 목록 및 0으로 채우기 테이블[0] :=1 0에서 n 사이의 i에 대해 0 ~ i - 1 범위의 j에 대해 수행 sub :=s[인덱스 j에서 i까지] sub가 회