두 개의 정수 n과 k가 있다고 가정하고 정확히 k개의 역쌍이 있도록 1에서 n까지의 숫자로 구성된 다른 배열의 수를 찾아야 합니다. 역쌍은 배열의 i번째 및 j번째 요소에 대한 것이며, i a[j]이면 역쌍이라고 합니다. 여기에서 답은 매우 클 수 있습니다. 답은 모듈로 $10^{9}$ + 7이어야 합니다. 따라서 입력이 n =3 및 k =1과 같으면 배열 [1,3,2] 및 [2,1,3]에 역쌍이 하나만 있으므로 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − (n + 1) x (k + 1) 크기의
k개의 정렬된 정수 목록이 있다고 가정합니다. k개의 목록 각각에서 적어도 하나의 숫자를 포함하는 가장 작은 범위를 검색해야 합니다. 여기서 범위 [a,b]는 b-a
A-Z의 문자가 포함된 메시지가 다음 매핑 방법을 사용하여 숫자로 인코딩되고 있다고 가정합니다. - 26 이제 인코딩된 문자열에는 1에서 9 사이의 숫자 중 하나로 처리될 수 있는 * 문자도 포함될 수 있습니다. 따라서 숫자와 * 문자가 포함된 인코딩된 메시지가 있는 경우 다음을 찾아야 합니다. 그것을 디코딩하는 총 방법 수. 답변이 매우 길면 mod 109 + 7을 사용하여 최종 결과를 얻을 수 있습니다. 따라서 입력이 *만 있으면 가능한 9가지 방법이 있을 수 있습니다. 이들은 모두 1에서 9까지의 숫자이므로 A에서 I입니다
이상한 프린터가 있다고 가정하면 몇 가지 요구 사항이 있습니다 - 프린터는 매번 동일한 문자의 시퀀스만 인쇄할 수 있습니다. 매 턴에서 프린터는 모든 위치에서 시작하고 끝나는 새 문자를 인쇄할 수 있으며 원래의 기존 문자를 덮습니다. 따라서 문자열이 소문자로 구성된 경우 우리의 임무는 인쇄에 필요한 최소 회전 수를 계산하는 것입니다. 따라서 입력이 aaabba와 같으면 2턴이 걸리고 먼저 aaaaa를 인쇄한 다음 문자를 교체하여 b를 인쇄합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=s의 크기 n이
하나의 구구단에 대해 알고 있다고 가정합니다. 그런데 곱셈표에서 k번째로 작은 수를 빨리 찾을 수 있을까요? 따라서 m * n 곱셈표의 높이 m과 길이 n, 그리고 하나의 양의 정수 k가 필요하다면 이 표에서 k번째로 작은 수를 찾아야 합니다. 따라서 m =3이고 n =3이고 k가 6이면 출력은 4가 됩니다. 이는 곱셈 테이블이 −와 같기 때문입니다. 1 2 3 1 1 2 3 2 2 4 6 3 3 6 9 6번째로 작은 요소는 [1,2,2,3,3,4,6,6,9]와 같이 4입니다. 이 문제를 해결하기 위해 다음 단
4장의 카드가 있다고 가정합니다. 이 카드는 1에서 9까지의 숫자를 가지고 있습니다. 24를 얻으려면 +, -, *, /와 같은 일부 연산자를 통해 작동할 수 있는지 확인해야 합니다. 따라서 [4,9,2,6 ], 그러면 (4 * 9) – (2 * 6)에 의해 24를 얻을 수 있습니다. 답은 참이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 엡실론 :=10.0^-5 solve() 함수를 정의하면 배열 v가 필요합니다. v의 크기가 1과 같으면 - |v[0] - 24.0|인 경우 true를 반환합니다. <=엡실론
뿌리를 내린 나무가 있다고 가정해 봅시다. 이것은 다른 모든 노드가 이 노드의 자손인 정확히 하나의 노드(루트)가 있고 모든 노드는 루트 노드를 제외하고 정확히 하나의 부모를 갖는 방향 그래프입니다. 루트에는 부모가 없습니다. 주어진 입력에서 하나의 추가 방향 모서리가 추가된 N 노드(모든 값이 고유함)가 있는 루트 트리로 시작하는 방향 그래프. 추가된 가장자리는 1에서 N까지 선택된 두 개의 서로 다른 정점을 가지며 이미 존재하는 가장자리가 아닙니다. 그래프는 에지의 2D 배열입니다. 모서리의 각 요소는 노드 u와 v를 연결하
nums of positive integers라고 하는 하나의 배열이 있다고 가정하고 최대 합계를 가진 3개의 겹치지 않는 하위 배열을 찾아야 합니다. 여기서 각 하위 배열의 크기는 k이고 모든 3*k 항목의 합계를 최대화하려고 합니다. 각 구간의 시작 위치를 나타내는 인덱스 목록으로 결과를 찾아야 합니다. 답변이 여러 개인 경우 사전순으로 가장 작은 답변을 반환합니다. 따라서 입력이 [1,2,1,2,6,8,4,1]이고 k =2이면 결과는 [0,3,5]이므로 하위 배열은 [1,2]입니다. [2,6], [8,4]는 시작 인덱스 [
N개의 다른 유형의 스티커가 있다고 가정합니다. 스티커의 각 유형에는 소문자 영어 단어가 있습니다. 우리는 스티커 컬렉션에서 개별 문자를 잘라내어 재배열하여 지정된 대상 문자열을 철자하고 싶습니다. 필요한 경우 각 스티커를 한 번 이상 사용할 수 있으며 각 스티커의 수량은 무한합니다. 우리는 대상을 철자하는 데 필요한 최소한의 스티커를 찾아야만 합니까? 작업이 불가능한 경우 -1을 반환합니다. 따라서 입력이 [dog, sentence, antenna]이고 대상이 dance인 경우 답은 3이 됩니다. 이 문제를 해결하기 위해 다
B라는 블랙리스트가 있다고 가정합니다. 이것은 범위 [0, N)에서 고유한 정수를 저장하는 것이므로 B에 없는 범위 [0, N)에서 균일한 임의의 정수를 반환하는 함수를 정의해야 합니다. 우리는 다음을 시도할 것입니다. random()을 줄여 이 함수를 더 최적화합니다. 함수 호출. 입력 배열이 다음과 같다고 가정합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 하나의 지도 정의 N과 배열 v로 초기화하겠습니다. 초기화 i의 경우:=0, i
범위 모듈이 필요하다고 가정합니다. 이것은 숫자의 범위를 추적하는 모듈입니다. 우리의 임무는 다음 인터페이스를 효율적인 방식으로 설계하고 구현하는 것입니다. addRange(왼쪽, 오른쪽). 이것은 반개방 간격[왼쪽, 오른쪽)이 되어 해당 간격의 모든 실수를 추적합니다. 이제 현재 추적되는 숫자와 부분적으로 겹치는 간격을 추가하면 간격에 아직 추적되지 않은 숫자가 추가되어야 합니다. queryRange(왼쪽, 오른쪽) . 간격 [왼쪽, 오른쪽)의 모든 실수가 현재 추적 중이면 true를 반환합니다. removeRange(left,
정수 배열이 있다고 가정합니다. 모든 쌍 중에서 k번째로 가장 작은 거리를 찾아야 합니다. 쌍 (A, B)의 거리는 실제로 A와 B의 절대 차이입니다. 따라서 입력이 [1,3,8]과 같으면 가능한 모든 쌍은 [1,3], [3, 8]입니다. , [1, 8], k =2일 때 두 번째로 작은 거리는 5(8 - 3)입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=숫자 크기, x :=0 초기화 i의 경우:=0, i
하나의 N x N 그리드가 있다고 가정하고 이것은 체리로 채워져 있습니다. 각 셀에는 다음과 같이 가능한 정수 중 하나가 있습니다. - 0 - 셀이 비어 있으므로 통과할 수 있음을 나타냅니다. 1 - 셀에 체리가 포함되어 있음을 나타냅니다. 체리를 집어서 통과할 수 있습니다. -1 - 세포가 길을 막는 가시를 포함하고 있음을 나타냅니다. 우리는 이 몇 가지 규칙을 사용하여 최대 수의 체리를 수집해야 합니다 - 유효한 경로 셀을 통해 오른쪽 또는 아래로 이동하여 위치(0, 0)에서 시작하여 (N-1, N-1)에서 끝납니다. 셀
암호로 보호되는 상자가 있다고 가정합니다. 암호는 n자리의 시퀀스로, 각 숫자는 처음 k자리 0, 1, ..., k-1 중 하나일 수 있습니다. 따라서 비밀번호를 입력할 때 입력한 마지막 n자리가 올바른 비밀번호와 자동으로 일치됩니다. 예를 들어 올바른 암호가 563이라고 가정하고 285639를 입력하면 올바른 암호가 입력한 암호의 접미사와 일치하기 때문에 상자가 열립니다. 우리는 입력의 어느 시점에서 상자를 열도록 보장되는 최소 길이의 암호를 찾아야 합니다. 입력이 n =2 및 k =2인 경우 결과는 01100, 00110,
하나의 N x N 그리드가 있다고 가정하고 각 정사각형 그리드[i][j]는 해당 지점(i,j)에서의 고도를 나타냅니다. 이제 비가 내리기 시작했다고 생각해 보십시오. 시간 t에서 모든 곳의 수심은 t입니다. 두 정사각형의 높이가 개별적으로 최대 t일 때 정사각형에서 4방향으로 인접한 다른 정사각형으로 수영할 수 있습니다. 우리는 제로 시간에 무한한 거리를 수영할 수 있습니다. (0, 0) 위치에서 시작해야 합니다. 오른쪽 아래 사각형(N-1, N-1)에 도달할 때까지 최소 시간을 찾아야 합니다. 따라서 입력이 다음과 같은 경우
시작점(sx, sy)과 목표점(tx, ty)이 있다고 가정하면 시작점에서 끝점까지 일련의 이동이 있는지 확인해야 합니다. 여기에서 이동은 점(x, y)을 가져 와서 (x, x+y) 또는 (x+y, y)로 변환하는 것으로 구성됩니다. 따라서 입력이 (1, 1) 및 (4,5)이면 답은 참이 됩니다. 이는 (1,1)을 (2,1), (3,1), (4)로 이동하기 때문입니다. ,1), 다음 (4,5). 이 문제를 해결하기 위해 다음 단계를 따릅니다. − sy, do − 동안 ty이면 - tx :=tx 모드 ty 그렇지 않으면 t
하나의 N x N 보드에 0과 1만 포함되어 있다고 가정합니다. 이제 각 이동에서 2개의 행 또는 2개의 열을 바꿀 수 있습니다. 보드를 체스판으로 변환하려면 최소 이동 수를 찾아야 합니다. 솔루션이 존재하지 않으면 -1을 반환합니다. 따라서 입력이 다음과 같으면 - 그러면 첫 번째 이동의 처음 두 열과 같이 출력이 2가 되고 보드는 다음과 같습니다. -
하나의 정렬된 목록이 있고 1과 소수의 소수가 있다고 가정합니다. 이제 목록의 모든 p
함수 f(x)가 있다고 가정하면 x의 계승 끝에 0의 수를 반환합니다. 따라서 f(3) =0인 경우 3! =6은 끝에 0이 없지만 f(11) =2는 11! =39916800은 끝에 2개의 0이 있습니다. 이제 K가 있을 때 f(x) =K라는 속성을 갖는 음이 아닌 정수 x가 몇 개인지 찾아야 합니다. 따라서 입력이 K =2와 같으면 답은 5가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ok() 함수를 정의하면 x가 걸립니다. ret :=0 초기화 i :=5의 경우, i <=x, 업데이트 i :=i * 5, −
배열 A가 있다고 가정하고 배열이 A[K], A[K+1], A{K+2], ... A[A.length - 1]이 되도록 K만큼 회전할 수 있습니다. A[0], A[1], ..., A[K-1]. 그런 다음 색인보다 작거나 같은 항목은 1점의 가치가 있습니다. 1 [점 없음], 0 <=2 [1점 획득], 2 <=3 [1점 획득], 4 <=4 [이득이기 때문에 이것은 3점의 가치가 있습니다. 한 점]. 우리는 가장 높은 점수를 얻을 K를 찾아야 합니다. 답이 여러 개인 경우 인덱스 K 중에서 가장 작은 값을 반환합니다. 따라서 입력이