문자열 s가 있고 주어진 문자열의 가장 긴 부분 문자열 T의 길이(소문자로만 구성됨)를 찾아야 한다고 가정하면 T의 모든 문자가 다음과 같이 나타나지 않습니다. k 배보다. 따라서 문자열이 ababbc이고 k =2이면 출력은 3이 되고 가장 긴 부분 문자열은 ababb가 됩니다. 2개의 a와 3개의 b가 있기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − lengthsSubstring()이라는 재귀 함수를 하나 생성합니다. 이 함수는 문자열 s와 크기 k를 사용합니다. k =1이면 문자열의 크기를 반환합니다. 문
대기열에 서 있는 무작위 목록이 있다고 가정해 보겠습니다. 각 사람이 한 쌍의 정수(h, k)로 기술되는 경우, 여기서 h는 키이고 k는 앞에 있는 사람 중 h보다 크거나 같은 키를 가진 사람의 수입니다. 대기열을 재구성하려면 한 가지 방법을 정의해야 합니다. 따라서 주어진 배열이 [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]와 같으면 출력은 다음과 같습니다. [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 다음 비교
양수만 포함하는 비어 있지 않은 배열이 있다고 가정하면 배열이 두 하위 집합의 요소 합계가 같도록 두 하위 집합으로 분할될 수 있는지 찾아야 합니다. 따라서 입력이 [1,5,11,5]와 같으면 출력이 true가 됩니다. 이 배열은 [1, 5, 5] 및 [11]로 분할될 수 있으므로 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=배열의 크기 합계 :=0 i:=0 ~ n – 1 합계 :=합 + 숫자[i] 합계가 홀수이면 false를 반환 합계 :=합 / 2 Sum + 1 크기의 dp라는 배열 하나 만들기 dp[0]
0-9 숫자의 잘못된 영어 표현을 포함하는 비어 있지 않은 문자열이 있다고 가정하고 숫자를 오름차순으로 출력합니다. 몇 가지 속성이 있습니다 - 입력은 유효하며 원래 숫자로 변환될 수 있습니다. 즉, abc 또는 zero와 같은 잘못된 입력은 허용되지 않습니다. 입력 길이가 50,000 미만입니다. 따라서 입력이 fviefuro와 같으면 출력은 45가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − nums :=0에서 9까지의 영문자로 된 숫자를 포함하는 배열 크기가 10인 배열 하나 만들기 ans :=빈 문자
대문자로만 구성된 문자열 s를 제공했다고 가정하면 해당 문자열에 대해 최대 k개의 연산을 수행할 수 있습니다. 한 번의 작업으로 문자열의 모든 문자를 선택하고 다른 대문자로 변경할 수 있습니다. 위의 작업을 수행한 후 얻을 수 있는 모든 반복 문자를 포함하는 가장 긴 부분 문자열의 길이를 찾아야 합니다. 따라서 입력이 ABAB 및 k =2와 같으면 출력은 4가 됩니다. 이는 2개의 A와 2개의 B 또는 그 반대이기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − maxCount :=0, ans :=0 및 n :=
1 ≤ a[i] ≤ n(n =배열의 크기) 범위의 정수 배열이 있다고 가정합니다. 여기서 일부 요소는 두 번 나타나고 다른 요소는 한 번 나타납니다. 이 배열에서 두 번 나타나는 모든 요소를 찾아야 합니다. 따라서 배열이 [4,3,2,7,8,2,3,1]이면 출력은 [2, 3]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=배열의 크기, 하나의 배열을 다음과 같이 0 ~ n – 1 범위의 i에 대해 x :=nums[i]의 절대값 x 1 감소 nums[x] <0이면 x + 1을 ans에 추가하고, 그렇지
문자열이 있다고 가정하면 빈도에 따라 문자를 정렬해야 합니다. 따라서 문자열이 abbbacbcc와 같으면 출력은 bbbbcccaa가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − v라는 쌍의 배열을 만들고 하나의 맵 m을 만듭니다. 문자열의 모든 문자에 대해, m[character] 값을 1 증가 i :=지도의 첫 번째 요소 지도에 요소가 있는 동안 v에 (i.second, i.first) 삽입 다음 요소를 가리키도록 i를 늘립니다. 벡터 v 정렬 ans :=빈 문자열 for i :=0 ~ v t :=v[i
음이 아닌 정수 a1, a2, ..., an 및 또 다른 값, 즉 대상 S의 목록이 있다고 가정합니다. 이제 2개의 기호 + 및 -가 있습니다. . 각 정수에 대해 새 기호로 +와 - 중에서 하나를 선택해야 합니다. 정수의 합을 목표 값 S와 같게 하기 위해 기호를 할당하는 방법의 수를 찾아야 합니다. 따라서 숫자가 [1,1,1,1,1]이고 S =3이면 출력은 다음과 같습니다. 5, 조합은 – 1 + 1 + 1 + 1 + 1 =3, + 1 – 1 + 1 + 1 + 1 =3, + 1 + 1 – 1 + 1 + 1 =3, + 1 + 1
원형 배열(마지막 요소의 다음 요소가 배열의 첫 번째 요소임)이 있다고 가정하면 모든 요소에 대해 다음 큰 숫자를 표시해야 합니다. 여기에서 숫자 x의 다음 큰 숫자는 배열에서 순회 순서 다음으로 큰 첫 번째 숫자입니다. 이는 다음 큰 숫자를 찾기 위해 순환적으로 검색할 수 있음을 의미합니다. 존재하지 않으면 -1이 됩니다. 따라서 숫자가 [1, 2, 1, 3, 2, 1]이면 출력은 [2,3,3,-1,3,2]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=배열의 크기 크기가 n인 res라는 배열 하나를 정
다른 종류의 동전과 총 금액이 있다고 가정해 보겠습니다. 그 양을 구성하는 조합의 수를 계산하는 모듈을 작성해야 합니다. 우리는 각 종류의 동전이 무한히 있다고 가정할 수 있습니다. 따라서 금액이 5이고 동전이 [1, 2, 5]이면 4개의 조합이 있습니다. (1+1+1+1+1), (1+1+1+2), (1+2+2), (5) 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 크기 + 1의 배열 dp 하나 생성 dp[0] :=1 n :=동전 배열의 크기 0 ~ n – 1 범위의 i에 대해 범위 코인[i]의 j에 대해 금액 dp[j]
정확히 한 번 나타나는 하나의 요소를 제외하고 모든 요소가 정확히 두 번 나타나는 정수로만 구성된 정렬된 배열이 있다고 가정합니다. 한 번만 나타나는 이 단일 요소를 찾아야 합니다. 따라서 배열이 [1, 1, 2, 3, 3, 4, 4, 8, 8]과 같으면 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ans :=0 0에서 nums 배열 크기 범위에 있는 i의 경우 ans :=ans XOR 숫자[i] 반환 예(C++) 더 나은 이해를 위해 다음 구현을 살펴보겠습니다. − #include <bi
정수 배열과 정수 k가 있다고 가정하면 합이 k와 같은 연속 하위 배열의 총 수를 찾아야 합니다. 따라서 nums 배열이 [1, 1, 1]이고 k가 2이면 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − sums, temp :=0, sums[0] :=1 및 ans :=0이라는 하나의 맵 정의 0 범위에서 배열 크기까지의 i에 대해 temp :=온도 + n[i] 합계에 k – temp가 있으면 ans :=ans + sums[k - temp] sum[-temp] 값을 1 증가 반환 예(C++) 더
두 개의 문자열 s1과 s2가 있다고 가정하고 s2에 s1의 순열이 포함되어 있으면 true를 반환하는 함수를 작성해야 합니다. 따라서 첫 번째 문자열의 순열 중 하나가 두 번째 문자열의 하위 문자열이라고 말할 수 있습니다. 따라서 문자열 s1 =abc이고 두 번째 문자열 s2가 findcab이면 결과는 abc의 순열이 참이므로 참이 됩니다. 바로 택시입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 크기가 26인 두 벡터 cnt1 및 cnt2 생성 0에서 s1 사이의 i에 대해 cnt1[s1[i] – a]의 값을 1
w1과 w2라는 두 단어가 있다고 가정하면 w1과 w2를 동일하게 만드는 데 필요한 최소 단계 수를 찾아야 합니다. 여기서 각 단계에서 각 문자열에서 한 문자를 삭제할 수 있습니다. . 따라서 입력이 sea 및 eat와 같으면 출력은 2가 됩니다. w1에서 s를 삭제해야 하기 때문에 이것은 ea가 되고 w2에서 eat에서 t가 삭제됩니다. 그렇다면 그들은 동일합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. n :=s1의 크기, m :=s2의 크기 문자열 s1 및 s2 앞에 공백 하나를 추가한 다음 그에 따라 s1 및 s
정렬된 배열이 있고 두 개의 정수 k와 x도 주어진다고 가정하면 해당 배열에서 x에 가장 가까운 k 요소를 찾아야 합니다. 결과는 오름차순으로 정렬되어야 합니다. 동점인 경우 항상 더 작은 요소가 선호됩니다. 따라서 입력이 [1,2,3,4,5]이고 k =4, x =3이면 출력은 [1,2,3,4]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − as라는 배열을 만듭니다. set low :=0, high :=배열 크기 – k 낮은 동안 <높음 중간 :=낮음 + (높음 - 낮음) /2 arr[mid + k] – x이면
정렬되지 않은 정수 배열이 하나 있다고 가정합니다. 가장 긴 증가하는 부분 수열의 수를 찾아야 하므로 입력이 [1, 3, 5, 4, 7]과 같으면 증가하는 부분 수열이 [1,3,5,7]이므로 출력은 2가 됩니다. [1, 3, 4, 7] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=num 배열의 크기, 크기가 n인 두 개의 배열 len과 cnt를 만들고 값 1로 채웁니다. lis :=1 1~n 범위의 i에 대해 0 ~ i – 1 범위의 j에 대해 숫자[j]이면 len[i]이면 len[i] :=len[j] + 1이
비어 있지 않은 단어 목록이 있다고 가정합니다. k개의 가장 빈번한 요소를 찾아야 합니다. 우리의 대답은 가장 높은 빈도에서 가장 낮은 빈도로 정렬되어야 합니다. 두 단어의 빈도가 같으면 알파벳 순서가 낮은 단어가 먼저 배치됩니다. 따라서 배열이 [, sky, is, blue, the, weather, is, comfortable]인 경우 가장 자주 사용되는 단어는 [is, 그,파란색] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − m이라는 하나의 지도 정의 하나의 우선 순위 대기열 생성 v for i :=0에서 n, 여기
nums라고 하는 정수 배열과 양의 정수 k가 있다고 가정하고 이 배열을 합이 모두 같은 k개의 비어 있지 않은 부분 집합으로 나눌 수 있는지 확인하십시오. 따라서 배열이 [4,3,2,3,5,2,1]이고 k =4인 경우 주어진 배열을 [[5], [ 1,4], [2,3], [2,3]] 합계가 동일합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − dp라는 두 개의 테이블을 정의하고 총 크기는 2^n, 주어진 배열 nums 정렬, set sum :=nums 배열에 있는 모든 요소의 합 sum / k이면 false를 반환합
바이너리 검색 트리가 있다고 가정합니다. 매개변수로 지정된 노드로 삽입 작업을 수행하는 메서드를 하나만 작성하면 됩니다. 수술 후에도 트리는 BST로 유지된다는 점을 염두에 두어야 합니다. 트리가 다음과 같다면 - 5를 삽입하면 트리는 -가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 이 방법은 재귀적입니다. 이것을 insert()라고 하며 v 값을 취합니다. 루트가 null이면 주어진 값 v로 노드를 생성하고 루트로 만듭니다. 루트의 값이 v이면 루트의 왼쪽 :=insert(루트의 왼쪽, v) 루
w1과 w2라는 두 단어가 있다고 가정하면 w1과 w2를 동일하게 만들기 위해 삭제된 문자의 가장 낮은 ASCII 합계를 찾아야 합니다. 끈. 따라서 입력이 sea 및 eat와 같은 경우 출력은 231이 됩니다. w1에서 를 삭제해야 하므로 w2에서 ea가 되고 eat에서 t가 삭제됩니다. 그런 다음 그들은 동일합니다. eat에서 t를 삭제하면 합계에 116이 추가되고 결국 두 문자열은 동일하며 115 + 116 =231이 이를 달성할 수 있는 최소 합계입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=s1의