x 및 y 리터의 용량을 가진 두 개의 주전자가 있다고 가정합니다. 우리에게 제공되는 물의 양은 무한합니다. 이제 이 두 용기를 사용하여 정확히 z리터를 측정할 수 있는지 여부를 결정해야 합니다. z리터의 물을 측정할 수 있는 경우 끝까지 하나 또는 두 양동이에 z리터의 물이 들어 있어야 합니다. 우리는 다음과 같은 몇 가지 작업을 수행할 수 있습니다. − 모든 용기에 물을 완전히 채웁니다. 용기를 비우십시오. 다른 용기가 완전히 차거나 첫 번째 용기가 비워질 때까지 한 용기의 물을 다른 용기에 붓습니다. 따
고유한 양의 정수 집합이 있다고 가정하고 이 부분 집합의 (Si, Sj)와 같은 모든 요소 쌍이 Si mod Sj =0 또는 Sj mod Si =0을 충족하도록 가장 큰 부분 집합을 찾아야 합니다. 따라서 입력이 [1,2,3]과 같으면 가능한 결과는 [1,2] 또는 [1,3] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 배열 ret 생성, 끝점 설정 :=0, retLen :=1, n :=숫자 크기 n이 0이면 빈 집합을 반환합니다. 숫자 배열 정렬 크기가 n인 두 개의 배열 len과 par를 만들고
a^b mod 1337을 계산해야 한다고 가정합니다. 여기서 a는 하나의 양의 정수이고 b는 배열 형태로 제공된 매우 큰 양의 정수입니다. 따라서 a =2이고 b =[1,0]이면 출력은 1024가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 기본 및 전원을 사용하는 powerMod() 메서드 정의 m :=1337, ret :=1 전력이 0이 아닌 동안 전력이 홀수이면 ret :=ret * 기본 모드 m 기본 :=기본^2 모드 m 전력 :=전력 / 2 리턴 렛 super
연속된 숫자 사이의 차이가 양수와 음수 사이에서 엄격하게 교대로 나타나는 경우 흔들기 수열이라고 하는 일련의 숫자가 있다고 가정합니다. 첫 번째 차이는 양수 또는 음수일 수 있습니다. 요소가 2개 미만인 시퀀스는 쉽게 흔들기 시퀀스입니다. 예를 들어 [1,7,4,9,2,5]는 흔들기 시퀀스입니다. 왜냐하면 차이(6,-3,5,-7,3)가 교대로 양수와 음수이기 때문입니다. 그러나 [1,4,7,2,5]와 [1,7,4,5,5]는 흔들기 시퀀스가 아닙니다. 첫 번째 것은 처음 두 차이가 양수이기 때문에, 두 번째 것은 마지막 차이가 0
단일 연결 목록이 있다고 가정하면 연결 목록에서 임의의 노드 값을 찾아야 합니다. 여기서 각 노드는 선택될 확률이 동일해야 합니다. 예를 들어 목록이 [1,2,3]이면 범위 1, 2, 3의 임의 노드를 반환할 수 있습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − getRandom() 메소드에서 다음을 수행하십시오 - ret :=-1, len :=1, v :=x v가 null이 아닌 동안 rand()가 len으로 나눌 수 있으면 ret :=v의 val len 1 증가 v :=v의 다음
1에서 n까지 정렬된 정수 목록이 있다고 가정합니다. 그것은 왼쪽에서 시작하여 오른쪽에서 끝나는 것이므로 목록의 끝에 도달할 때까지 첫 번째 숫자와 다른 모든 숫자를 나중에 제거해야 합니다. 이전 단계를 다시 반복하지만 이번에는 오른쪽에서 왼쪽으로 가장 오른쪽 숫자와 나머지 숫자에서 다른 모든 숫자를 제거합니다. 하나의 숫자가 남을 때까지 왼쪽에서 오른쪽으로, 오른쪽에서 왼쪽으로 교대로 단계를 다시 반복합니다. 길이가 n인 목록으로 시작하여 남아 있는 마지막 숫자를 찾아야 합니다. 따라서 입력이 n =9와 같으면 단계는 다음과 같
데이터를 나타내는 정수 목록이 있다고 가정합니다. 유효한 UTF-8 인코딩인지 여부를 확인해야 합니다. 하나의 UTF-8 문자는 1~4바이트 길이가 될 수 있습니다. 몇 가지 속성이 있습니다 - 1바이트 문자의 경우 첫 번째 비트는 0이고 그 뒤에 유니코드 코드가 옵니다. n바이트 문자의 경우 첫 번째 n비트는 모두 1이고 n+1비트는 0이며 그 다음 n-1바이트가 오고 최상위 2비트는 10입니다. 따라서 인코딩 기술은 다음과 같습니다 - 문자 수 범위 UTF-8 옥텟 시퀀스 0000 0000 0000 007F
정수 배열 A가 주어졌다고 가정하고 n을 배열 A의 길이라고 하자. 이제 Bk가 배열 A, k 위치를 시계 방향으로 회전하여 얻은 배열이라고 가정합니다. 여기서 회전은 다음과 같이 정의할 수 있습니다. - F(k) =0 * Bk[0] + 1 * Bk[1] + ... + (n-1) * Bk[n-1]. 이제 F(0), F(1), ..., F(n-1)의 최대값을 찾으십시오. 따라서 입력이 A =[4,3,2,6]과 같으면 - F(0) =(0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) =0 + 3 + 4
양의 정수 n이 있고 다음과 같이 이러한 작업을 수행할 수 있다고 가정합니다. - n이 짝수이면 n을 n/2로 바꿉니다. n이 홀수이면 n을 n + 1 또는 n - 1로 바꿀 수 있습니다. n이 1이 되는 데 필요한 최소 교체 수를 찾아야 합니까? 따라서 숫자가 7이면 답은 7 → 8 → 4 → 2 → 1 또는 7 → 6 → 3 → 2 → 1과 같이 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ret :=0, n :=x 1 n이 짝수이면 c :=n / 2 그렇지 않으면
중복 가능성이 있는 정수 배열이 있다고 가정하면 주어진 대상 번호에서 무작위로 인덱스를 선택해야 합니다. 주어진 타겟 번호가 어레이에 존재해야 한다고 가정할 수 있습니다. 따라서 배열이 [1,2,3,3,3]과 같으면 pick(3)이 2, 3, 4를 무작위로 반환할 수 있습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ret :=- 1, cnt :=1 범위 0에서 v 크기까지의 i에 대해 v[i] =대상이면 난수 mod cnt =0이면 ret =i cnt :=cnt + 1 리턴 렛
0 ≤ ai <231인 숫자 a0, a1, a2, … , an-1의 비어 있지 않은 배열이 있다고 가정합니다. ai의 최대 결과를 찾아야 합니다. XOR aj, 여기서 0 ≤ i, j
두 개의 음이 아닌 정수를 나타내는 비어 있지 않은 두 개의 연결 목록이 있다고 가정합니다. 여기서 가장 중요한 숫자가 먼저 오고 각 노드에는 단일 숫자가 포함됩니다. 두 숫자를 추가하고 연결 목록으로 반환해야 합니다. 따라서 목록이 [7, 2, 4, 3] + [5, 6, 4]이면 결과는 [7, 8, 0, 7]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − dummy라는 노드를 만들고 값 0을 저장하고 스택 s1과 s2를 만듭니다. s1을 l1의 노드로 채우고 s2를 s2의 노드로 채웁니다. 합계
단일 스레드 CPU에서 일부 기능을 실행한다고 가정합니다. 이제 각 함수는 0과 N-1 사이의 고유 ID를 갖습니다. 함수가 시작되거나 종료될 때를 설명하는 타임스탬프 순서로 로그를 저장합니다. 여기서 각 로그는 {function_id}:{start | end}:{timestamp} 형식으로 작성된 문자열입니다. 예를 들어, 문자열이 0:start:3과 같다면 이것은 id 0의 함수가 타임스탬프 3의 시작 부분에서 시작되었음을 의미합니다. 1:end:2는 id 1의 함수가 타임스탬프의 끝에서 종료되었음을 의미합니다. 2. 함수의
상점이 있고 판매할 품목이 있다고 가정합니다. 각 항목에는 약간의 가격이 있습니다. 그러나 몇 가지 특별 제안이 있으며 특별 제안은 할인 가격의 하나 이상의 다른 종류의 품목으로 구성됩니다. 따라서 가격 목록, 특별 제안 세트 및 각 품목에 대해 구매해야 하는 번호가 있습니다. 임무는 주어진 대로 정확히 특정 품목에 대해 지불해야 하는 최저 가격을 찾는 것입니다. 여기서 특별 제안을 최적으로 사용할 수 있습니다. 여기에서 각 특별 제안은 배열 형태로 표시되며, 마지막 숫자는 이 특별 제안에 대해 지불해야 하는 가격을 나타내고, 다
Dota2의 세계에는 The Radiant와 Dire라는 두 개의 파티가 있다고 가정해 보겠습니다. Dota2 상원은 두 정당에서 온 상원의원으로 구성됩니다. 이제 상원은 Dota2 게임 내에서 몇 가지 변경 사항을 선택하려고 합니다. 이 변경에 대한 투표는 라운드 기반 절차일 수 있습니다. 각 라운드에서 각 상원의원은 다음 두 가지 권리 중 하나를 행사할 수 있습니다. 한 상원의원의 권리 금지 - 상원의원은 이번 라운드와 이후 라운드에서 다른 상원의원이 자신의 모든 권리를 잃게 만들 수 있습니다. 승리 선언 - 이 상
행에 소행성을 나타내는 정수 배열이 있다고 가정합니다. 이제 각 소행성에 대해 절대값은 크기를 나타내고 부호는 각각 오른쪽과 왼쪽에 대해 양수 또는 음수일 수 있는 방향을 나타냅니다. 각 소행성은 같은 속도로 움직입니다. 우리는 모든 충돌 후에 소행성의 상태를 찾아야 합니다. 두 개의 소행성이 만나면 작은 소행성이 폭발합니다. 둘 다 크기가 같으면 둘 다 폭발합니다. 같은 방향으로 움직이는 두 개의 소행성은 결코 만나지 않을 것입니다. 따라서 입력이 [5, 10, -5]와 같으면 출력은 [5, 10]이 됩니다. 여기서 10과 -
정수 배열이 있다고 가정하고 배열에 대해 몇 가지 작업을 수행할 수 있습니다. 여기 각 작업에서 nums[i]를 선택하고 삭제하여 nums[i]만큼의 포인트를 얻습니다. nums[i] - 1 또는 nums[i] + 1과 같은 모든 요소를 삭제해야 합니다. 처음에 포인트는 0입니다. 이러한 연산을 적용하여 얻을 수 있는 최대 포인트 수를 찾아야 합니다. 따라서 입력이 [3,4,2]와 같으면 출력은 6이 됩니다. 따라서 4를 삭제하면 4포인트를 얻게 되고 결과적으로 3도 삭제되기 때문입니다. 그런 다음 2를 삭제하여 2점을 얻습니다
Domino와 Tromino의 두 가지 유형의 모양이 있다고 가정합니다. 아래와 같이 회전할 수 있습니다 - 타일링에서 모든 사각형은 타일로 덮여 있어야 합니다. 여기서 두 타일은 보드에 4방향으로 인접한 두 개의 셀이 있고 타일 중 정확히 하나가 타일이 차지하는 두 사각형이 모두 있는 경우에만 다릅니다. N이 주어지면 2xN 보드를 타일링할 수 있는 방법의 수를 찾아야 합니다. 따라서 입력이 3이면 출력은 5가 됩니다. 따라서 배열은 [XYZ XXZ XYY XXY XYY] 및 [XYZ YYZ XZZ XYY XXY]가 될 수
S와 T 두 개의 문자열이 소문자로 구성되어 있다고 가정합니다. S에서는 문자가 두 번 이상 나오지 않습니다. S는 이전에 일부 사용자 지정 순서로 정렬되었습니다. S가 정렬된 순서와 일치하도록 T의 문자를 치환해야 합니다. 보다 구체적으로, S에서 x가 y보다 먼저 발생하면 반환된 문자열에서 x가 y보다 먼저 발생합니다. 따라서 S =cba이고 T =abcd이면 출력은 cbad가 됩니다. 여기서 a, b, c는 S에 나타나므로 a, b, c의 순서는 c, b, a여야 합니다. d는 S에 나타나지 않으므로 T의 모든 위치에 있을
양의 정수로 구성된 배열 A가 있고 두 개의 양의 정수 L과 R도 주어진다고 가정합니다. 우리는 그 하위 배열의 최대 배열 요소의 값이 최소 L과 최대 R이 되도록 (인접한, 비어 있지 않은) 하위 배열의 수를 찾아야 합니다. 따라서 A =[2,1,4,3]이고 L =2 및 R =3이면 요구 사항을 충족하는 3개의 하위 배열이 있으므로 출력은 3이 됩니다. [2], [2,1], [3]입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ret :=0, dp :=0, 이전 :=-1 범위 0에서 A – 1 크기의 i에