두 개의 소문자 문자열 S와 T가 있다고 가정하고 가장 긴 아나그램 하위 시퀀스의 길이를 찾아야 합니다. 따라서 입력이 S =helloworld, T =hellold와 같으면 출력은 8이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − c :=새 지도, d :=새 지도 범위 0에서 크기까지의 i에 대해 c에서 a[i]이면 c[a[i]] :=c[a[i]] + 1 그렇지 않으면 c[a[i]] :=1 범위 0에서 b 크기까지의 i에 대해 b[i]가 d이면 d[
정렬되지 않은 숫자 배열이 있다고 가정하고 연속 요소의 가장 긴 시퀀스의 길이를 찾아야 합니다. 따라서 입력이 nums =[70, 7, 50, 4, 6, 5]와 같으면 연속 요소의 가장 긴 시퀀스가 [4, 5, 6, 7]이므로 출력은 4가 됩니다. 그래서 우리는 길이를 반환합니다:4. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − nums :=nums의 모든 고유 요소 max_cnt :=0 숫자의 각 숫자에 대해 수행 숫자 - 1이 숫자가 아닌 경우 cnt :=0 num이 num에 있는
nums라는 숫자 목록이 있고 모든 요소가 고유한 가장 긴 연속 하위 목록의 길이를 찾아야 한다고 가정합니다. 따라서 입력이 nums =[6, 2, 4, 6, 3, 4, 5, 2]와 같으면 고유 요소의 가장 긴 목록이 [6, 3, 4, 5이므로 출력은 5가 됩니다. , 2]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 머리 :=0, dct :=새 지도 max_dist :=0 nums의 각 인덱스 i 및 요소 num에 대해 수행 =head에 있으면 머리 :=dct[숫자] + 1 dct[숫
nums와 k라는 숫자 목록이 있다고 가정합니다. 이제 한 요소를 한 번 증가시킬 수 있는 작업을 고려하십시오. 최대 k 번 연산을 수행할 수 있다면 동일한 요소를 포함하는 가장 긴 하위 목록을 찾아야 합니다. 따라서 입력이 nums =[3, 5, 9, 6, 10, 7] k =6과 같으면 출력은 3이 됩니다. 하위 목록 [10, 10]을 얻기 위해 9를 한 번, 6을 네 번 증가시킬 수 있기 때문입니다. , 10]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 숫자가 비어 있으면 0 반환 wMax :=
이진 트리가 있다고 가정하면 트리의 두 노드 사이에서 짝수 값으로 구성된 가장 긴 경로를 찾아야 합니다. 따라서 입력이 다음과 같으면 가장 긴 경로가 [10, 2, 4, 8, 6]이므로 출력은 5가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 답변 :=0 find() 함수를 정의합니다. 노드가 필요합니다. 노드가 null이면 리턴(-1, -1) leftCnt :=find(노드 왼쪽)의 반환값의 최대값 + 1 rightCnt :=find(노드 오른쪽)의 반환값의 최대값 +
숫자 목록이 있다고 가정합니다. 가장 긴 증가하는 수열의 길이를 찾아야 합니다. 따라서 입력이 [6, 1, 7, 2, 8, 3, 4, 5]와 같으면 가장 긴 증가 부분 시퀀스가 [2,3,4,5,6]이므로 출력은 5가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − nums와 크기가 같은 tails라는 배열을 만들고 0으로 채웁니다. 크기 :=0 nums 배열의 각 요소 x에 대해 - i :=0, j :=크기 i가 j와 같지 않은 동안 중간 :=i + (j – i)/2 tails
nums라고 하는 mumber 목록이 있고 모든 연속 숫자 사이의 동등 관계가 보다 작음 및 보다 큼 연산 사이에서 교대로 변경되도록 가장 긴 하위 목록 innum의 길이를 찾습니다. 처음 두 숫자의 부등식은 보다 작거나 클 수 있습니다. 따라서 입력이 nums =[1, 2, 6, 4, 5]와 같으면 가장 긴 부등식 교번 하위 목록이 [2, 6, 4, 5]이므로 2 4이므로 출력은 4가 됩니다. <5. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − get_direction() 함수를 정의합니다. 이것은, b a
문자열 S가 있다고 가정합니다. S에서 가장 긴 회문 부분 문자열의 길이를 찾아야 합니다. 문자열 S의 길이가 1000이라고 가정합니다. 따라서 문자열이 BABAC이면 가장 긴 회문 부분 문자열은 BAB입니다. 길이는 3입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 문자열의 길이와 같은 차수의 정사각 행렬을 하나 정의하고 False로 채웁니다. 주요 대각선 요소를 true로 설정하여 0에서 차수 – 1까지의 모든 i에 대해 DP[i, i] =True 시작 :=0 범위 2에서 S + 1까지의 길이
하위 목록의 최대값에서 가장 긴 하위 목록의 길이를 찾아야 합니다. 6. 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- ret :=0 두 개의 이중 종료 대기열 minq 및 maxq 정의 l :=0, r :=0 동안 r <숫자 크기, 수행 n :=숫자[r] minq 및 n
문자열 s가 있다고 가정하고 최대 2개의 고유한 문자를 포함하는 가장 긴 부분 문자열의 길이를 찾아야 합니다. 따라서 입력이 s =xyzzy와 같으면 출력은 4가 됩니다. yzzy는 최대 2개의 고유 문자가 있는 가장 긴 부분 문자열이기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- 시작 :=0 c :=지도 답변 :=0 범위 0에서 s까지의 끝을 위해 c[s[end]] :=c[s[end]] + 1 2인 동안 수행 c[s[시작]] :=c[s[시작]] - 1 c[s[
이진 트리가 있다고 가정하고 루트에서 리프 노드까지의 가장 긴 경로의 합을 찾아야 합니다. 동일한 긴 경로가 두 개 있으면 합이 더 큰 경로를 반환합니다. 따라서 입력이 다음과 같으면 그러면 출력은 20이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 함수 rec() 를 정의하십시오. 시간이 걸립니다 curr이 null이면 리턴(0, 0) 더 큰 :=최대 rec(curr의 왼쪽) , rec(curr의 오른쪽) 쌍을 반환(더 큰[0] + 1, 더 큰[1] + curr의 값)
소문자 문자열 s와 다른 값 k가 있다고 가정합니다. 이제 반복되는 연속 문자를 개수와 문자로 넣어 문자열에 대해 실행 길이 인코딩을 수행하는 작업을 고려하십시오. 따라서 문자열이 aaabbc와 같으면 3a2bc로 인코딩됩니다. 여기서 c는 연속적으로 한 번만 나타나므로 1c를 넣지 않습니다. 따라서 먼저 s에서 k 연속 문자를 제거한 다음 결과 실행 길이 인코딩의 가능한 최소 길이를 찾을 수 있습니다. 따라서 입력이 s =xxxxxyyxxxxxzzxxx, k =2와 같으면 출력은 6이 됩니다. 두 가지 분명한 선택은 yy 또는
이진 트리가 있고 두 개의 숫자 a와 b가 있다고 가정하면 및 b를 자손으로 갖는 가장 낮은 노드의 값을 찾아야 합니다. 노드가 자신의 자손이 될 수 있음을 명심해야 합니다. 따라서 입력이 다음과 같으면 a =6, b =2이면 출력은 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 해결 방법을 정의하십시오() 이것은 뿌리를 내리고, b 루트가 null이면 반환 -1 루트 값이 또는 b이면 루트의 반환 값 왼쪽 :=해결(루트의 왼쪽, a, b) right :=해결
문자열 s가 있다고 가정하고 문자열이 회문(palindrome)이 되도록 삽입하는 데 필요한 최소 문자 수를 찾아야 합니다. 따라서 입력이 s =mad와 같으면 출력은 2가 됩니다. am을 삽입하여 madam을 얻을 수 있기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 함수 dp()를 정의합니다. 이것은 i, j가 걸릴 것입니다 =j이면 0 반환 s[i]가 s[j]와 같으면 반환 dp(i + 1, j - 1) 그렇지 않으면 dp(i + 1, j) 및 dp(i, j -
두 개의 목록 l1과 l2가 있다고 가정하고 이 작업을 반복적으로 적용하여 목록을 동일하게 만들어야 합니다. - 하위 목록을 선택하고 전체 하위 목록을 합으로 바꿉니다. 마지막으로 위의 작업을 적용한 후 가능한 가장 긴 결과 목록의 크기를 반환합니다. 해결책이 없으면 -1을 반환합니다. 따라서 입력이 l1 =[1, 4, 7, 1, 2, 10] l2 =[5, 6, 1, 3, 10]인 경우 출력은 4가 됩니다. 마치 이 작업을 다음과 같이 수행하는 것처럼 다음 - l1의 하위 목록 [1, 4]를 가져오면 [5, 7, 1, 2, 10
서로 다른 교단(1,5,10,25)의 동전과 총 금액이 있다고 가정합니다. 해당 금액을 구성하는 데 필요한 최소 동전 수를 계산하기 위해 하나의 함수를 정의해야 합니다. 따라서 입력이 64이면 출력은 7입니다. 이것은 25 + 25 + 10 + 1 + 1 + 1 + 1 =64를 사용하여 구성됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 금액 =0이면 0을 반환 금액이면 -1 반환 크기가 +1인 dp라는 배열 하나를 정의하고 -1로 채웁니다. 범위에 있는 i의 경우 동전 배열 length of dp – 1이면 다
다른 종류의 동전과 총 금액이 있다고 가정합니다. 해당 금액을 구성하는 데 필요한 최소 동전 수를 계산하기 위해 하나의 함수를 정의해야 합니다. 동전의 어떤 조합으로도 해당 금액을 수용할 수 없으면 -1을 반환합니다. 따라서 입력이 [1,2,5]이고 금액이 64이면 출력은 14입니다. 이것은 12*5 + 2 + 2 =64를 사용하여 구성됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 금액 =0이면 0을 반환 금액이면 -1 반환 크기가 +1인 dp라는 배열 하나를 정의하고 -1로 채웁니다. 범위에 있는 i의 경우 동
음수가 아닌 숫자 목록이 nums이고 음수가 아닌 값 k가 있다고 가정합니다. 이제 숫자에서 단일 양수를 선택하고 1로 줄이는 연산을 수행할 수 있다고 가정합니다. 목록에 있는 모든 인접 값의 합이 <=k가 되도록 필요한 최소 연산 수를 찾아야 합니다. 답이 매우 크면 결과 모드 10^9 + 7을 반환합니다. 따라서 입력이 nums =[4, 6, 2, 5], k =6과 같으면 목록을 [3, 3, 1, 4]로 감소시킬 수 있으므로 출력은 5가 됩니다. 5 감소. 여기서 모든 인접한 쌍의 합은 <=6입니다. 이 문제를 해결하기 위해
nums라고 하는 숫자 목록과 size와 k라는 두 개의 값이 있다고 가정합니다. 이제 길이 크기의 연속적인 하위 목록을 가져와 모든 요소를 하나씩 증가시키는 작업이 있다고 가정합니다. 이 작업을 k번 수행할 수 있으며 가능한 가장 큰 최소값을 숫자로 찾아야 합니다. 따라서 입력이 nums =[2, 5, 2, 2, 7], size =3, k =2와 같으면 출력은 [2, 5, 2]를 증가시켜 [ 3, 6, 3, 2, 7] 그런 다음 [6, 3, 2]를 증가시켜 [3, 7, 4, 3, 7]을 얻습니다. 최소값은 3입니다. 이 문
길이가 같은 숫자 A의 목록과 숫자 B의 목록이 있다고 가정합니다. 또한 각 요소가 [i, j] 형식인 숫자 C의 2D 목록이 있습니다. 이는 A[i]와 A[j]를 원하는 만큼 교체할 수 있음을 나타냅니다. 교환 후 A[i] =B[i]인 최대 쌍 수를 찾아야 합니다. 따라서 입력이 A =[5, 6, 7, 8], B =[6, 5, 8, 7], C =[[0, 1],[2, 3]]인 경우 출력은 A[0]을 A[1]로 교체한 다음 A[2]를 A[3]으로 교체할 수 있으므로 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. −