nums라는 정수가 있는 배열이 있고 또 다른 두 개의 값 m과 k가 있다고 가정합니다. 이제 m개의 꽃다발을 만들어야 합니다. 하나의 꽃다발을 만들려면 정원에서 k 개의 인접한 꽃이 필요합니다. 여기 정원은 n개의 다른 꽃으로 구성되어 있으며, i번째 꽃은 bloomDay[i]에 피어납니다. 각 꽃은 하나의 부케에만 사용할 수 있습니다. 우리는 정원에서 m개의 꽃다발을 만들기 위해 기다려야 하는 최소 일수를 찾아야 합니다. m 부케를 만들 수 없으면 -1을 반환합니다. 따라서 입력이 bloomDay =[5,5,5,5,10,5,5
이름이라는 n개의 문자열 배열이 있다고 가정합니다. i번째 분에 이름이 [i]인 디렉토리를 생성할 수 있도록 파일 시스템에 n개의 디렉토리를 만들어야 합니다. 두 파일은 같은 이름을 가질 수 없습니다. 중복 디렉토리 이름을 입력하면 시스템은 (k) 형식으로 이름에 접미사를 추가합니다. 여기서 k는 얻은 이름이 고유하게 유지되도록 하는 가장 작은 양의 정수입니다. 길이가 n인 문자열 배열을 찾아야 합니다. 여기서 ans[i]는 생성할 때 i번째 디렉토리에 할당할 실제 이름입니다. 따라서 입력이 이름 =[my_dir,my_dir(1)
두 개의 양수 값 n과 k가 있다고 가정합니다. 이제 오름차순으로 정렬된 n의 모든 요소 목록이 있다고 가정하고 이 목록에서 k번째 요소를 찾아야 합니다. k개 미만인 경우 -1을 반환합니다. 따라서 입력이 n =28 k =4와 같으면 출력은 7이 됩니다. 28의 인수는 [1,2,4,7,14,28]이고 네 번째 인수는 7이기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − k가 1과 같으면 1 반환 cand :=요소가 하나인 목록 [1] 범위 2에서 1 + floor of(n의 제곱근)에
num이라는 이진 배열이 있다고 가정하고 이 배열에서 하나의 요소를 삭제할 수 있습니다. 결과 배열에서 1만 포함하는 비어 있지 않은 가장 긴 하위 배열의 크기를 찾아야 합니다. 그러한 하위 배열이 없으면 0을 반환합니다. 따라서 입력이 nums =[1,0,1,1,1,0,1,1,0]과 같으면 위치 5에서 0을 제거하면 하위 배열 [1]을 얻을 수 있기 때문에 출력은 5가 됩니다. ,1,1,1,1] 5개의 1이 있습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 0이 숫자가 아니면 숫자의 크기를 반환 - 1
num이라는 배열이 있고 이 배열에 짝수개의 요소가 포함되어 있고 다른 값 k가 있다고 가정합니다. 각 쌍의 합이 k로 나누어지도록 num을 정확히 n/2 쌍으로 분할해야 합니다. 그렇게 할 수 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다. 따라서 입력이 nums =[9,5,3,4,7,10,20,8] k =3과 같으면 (9,3), (5)와 같은 쌍을 만들 수 있기 때문에 출력은 True가 됩니다. ,7), (4,20), (8,10), 모든 쌍의 합은 3으로 나눌 수 있습니다. 이 문제를 해결하기 위해 다음 단
nums라는 배열과 다른 값 k가 있다고 가정합니다. 최소 및 최대 요소의 합이 k보다 작거나 같도록 nums의 비어 있지 않은 부분 수열의 수를 찾아야 합니다. 답변이 매우 클 수 있으므로 답변 모드 10^9 + 7을 반환합니다. 따라서 입력이 nums =[4,6,7,8] k =11과 같으면 출력은 와 같은 하위 시퀀스가 있기 때문에 4가 됩니다. [4], 여기서 최소값은 4, 최대값은 4이므로 4+4 <=11 [4,6], 여기서 최소값은 4이고 최대값은 6이므로 4+6 <=11 [4,6,7], 여기서 최소값
m x n 이진 행렬이 있다고 가정하고 모두 1을 갖는 정사각형 부분행렬의 수를 찾아야 합니다. 그래서, 입력이 같다면. 0 1 1 1 1 1 1 1 0 1 1 1 그러면 1변에 10개의 정사각형이 있으므로 출력은 15가 됩니다. 변 2에 4개의 정사각형과 변 3에 1개의 정사각형이 있습니다. 그러면 총 정사각형 수 =10 + 4 + 1 =15입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 행렬에 하나의 행렬이 있으면 1 반환 행 :=행렬의 행 수 cols :=행렬[0]의 열 개수
m x n 이진 행렬이 있다고 가정하고 모두 1인 부분행렬의 수를 찾아야 합니다. 따라서 입력이 다음과 같으면 1 0 1 0 1 1 0 1 1 6(1x1) 행렬, 3(2,1) 행렬, 2(1x2) 행렬, 1(3x1) 행렬 및 1(4x4) 행렬이 있으므로 출력은 13이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − m :=행렬의 행 수 n :=행렬의 열 개수 dp :=같은 크기의 0 행렬 m x n 0 ~ m - 1 범위의 i에 대해 수행 0 ~ n - 1 범위의 j에 대해 수행
n개의 양수 요소가 있는 배열 num이 있다고 가정합니다. 비어 있지 않은 모든 연속 하위 배열의 합을 계산한 다음 n*(n+1)/2 숫자의 새 배열을 만들어 감소하지 않는 방식으로 정렬합니다. 새 배열에서 왼쪽 인덱스에서 오른쪽 인덱스(1-인덱스)까지의 숫자 합계를 찾아야 합니다. 답은 매우 클 수 있으므로 모듈로 10^9 + 7을 반환합니다. 따라서 입력이 nums =[1,5,2,6] left =1 right =5와 같으면 출력은 20이 됩니다. 여기서 모든 하위 배열 합계는 1, 5, 2, 6, 6, 7, 8이기 때문입니다.
num이라는 배열이 있다고 가정합니다. 이 배열의 한 요소를 한 번에 원하는 값으로 변경할 수 있습니다. 최대 3개의 동작을 수행한 후 num의 가장 큰 값과 가장 작은 값 사이의 최소 차이를 찾아야 합니다. 따라서 입력이 nums =[3,7,2,12,16]과 같으면 주어진 배열을 [1,1,0,1,1]로 만들 수 있으므로 출력은 1이 됩니다. 따라서 최대값은 1이고 최소값은 0이므로 차이는 1입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 숫자의 크기가 <=4이면 0 반환 목록 번호 정렬 a
이진 문자열 s가 있다고 가정합니다. 모든 문자가 1인 부분 문자열의 수를 찾아야 합니다. 답변이 매우 클 수 있으므로 결과 모드 10^9 + 7을 반환합니다. 따라서 입력이 s =1011010과 같으면 출력은 5가 됩니다. 왜냐하면 1. 네 번 1 2. 한 번 11이기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − m :=10^9+7 결과 :=0 div :=0을 사용하여 분할하여 이진 문자열을 나눕니다. div의 각 x에 대해 수행 x가 비어 있으면 다음 반복으로 이동 결과 :
n개의 노드(노드에는 0부터 번호가 지정됨)가 있는 무방향 가중치 그래프가 있다고 가정합니다. 이 그래프는 에지 목록을 사용하여 입력으로 제공되며, 각 에지 e에 대해 해당 에지 확률[e]을 통과할 확률이 있습니다. 우리는 또한 시작과 끝 노드를 가지고 있습니다. 우리는 시작에서 끝으로 가는 최대 성공 확률을 가진 경로를 찾고 성공 확률을 반환해야 합니다. 경로를 찾을 수 없으면 0을 반환합니다. 따라서 입력이 다음과 같으면 노드 0에서 2까지의 두 경로가 있기 때문에 출력은 0.24가 됩니다. 하나는 확률 0.2이고 다른
노드가 0에서 n-1까지 번호가 매겨진 n개의 노드가 있는 루트 일반 트리가 있다고 가정합니다. 각 노드에는 소문자 영어로 된 레이블이 있습니다. 레이블은 레이블 배열의 입력으로 제공되며, 여기서 lables[i]는 i번째 노드에 대한 레이블을 포함합니다. 트리는 각 에지 e가 [u,v]를 갖고 u가 부모이고 v가 자식을 나타내는 에지 목록으로 표시됩니다. i와 동일한 레이블을 가진 i번째 노드의 하위 트리에 있는 노드 수를 나타내는 n 크기의 배열 A를 찾아야 합니다. 따라서 입력이 다음과 같으면 여기서 n =5 및 레이블
배열 arr이 있다고 가정합니다. 합이 홀수인 부분배열의 수를 찾아야 합니다. 답이 너무 크면 10^9+7 모듈로 결과를 반환합니다. 따라서 입력이 arr =[8,3,7]과 같으면 모든 하위 배열이 [[8],[3],[7],[8,3],[3, 7],[8,3,7]] 이제 합 값은 [8,3,7,11,10,18]이므로 세 개의 홀수 합 값 [3,7,11]이 있습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − freq :=두 개의 요소 1과 0을 가진 목록 답변 :=0 접두사 :=0 arr의 각 x에 대해
문자열 s가 있다고 가정합니다. 이제 분할은 s를 2개의 비어 있지 않은 문자열 p와 q로 나눌 수 있을 때 좋은 분할이라고 합니다. 우리는 s에서 할 수 있는 좋은 스플릿의 수를 찾아야 합니다. 따라서 입력이 s =xxzxyx와 같으면 여러 분할 방법이 있으므로 출력은 2가 됩니다. 그러나 (xxz, xyx) 또는 (xxzx, yx)와 같이 분할하면 그러면 그들은 좋습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 결과 :=0 왼쪽 :=항목의 빈도를 계산하는 빈 mal right :=s에 있는 각 문
방에 n개의 전구가 있다고 가정하고 이 전구의 번호는 0에서 n-1까지입니다. 우리는 그것들을 왼쪽에서 오른쪽으로 일렬로 배열해야 합니다. 처음에는 모든 전구가 꺼집니다(0 상태). i번째 전구가 켜져 있으면 t[i]가 1이고 꺼져 있으면 0인 지정된 대상 배열 t로 표시되는 구성을 가져와야 합니다. 전구의 상태를 뒤집는 스위치도 있습니다. 그리고 뒤집기 연산은 다음과 같이 정의됩니다 - 전구 색인 i를 선택하십시오. 각 전구를 인덱스 i에서 인덱스 n - 1로 뒤집습니다. 목표를 형성하는 데 필요한 최소 뒤집기 횟
이진 트리가 있다고 가정합니다. 및 또 다른 값 거리 d. 두 노드 사이의 최단 경로가 거리 d보다 작거나 같을 때 두 개의 서로 다른 잎 노드 쌍을 양호하다고 합니다. 따라서 입력이 다음과 같으면 그리고 거리 d =4이면 경로 길이 거리가 2이므로 쌍은 (8,7) 및 (5,6)이지만 (7,5) 또는 (8,6) 또는 다른 쌍이기 때문에 출력은 2가 됩니다. 경로 길이가 d =4보다 큰 5이므로 좋지 않습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 솔 :=0 util() 함수를 정의합니다. 이것은 뿌
arr이라는 배열이 있고 고유한 요소가 포함되어 있고 또 다른 값 k가 있다고 가정합니다. 이제 배열의 처음 두 요소를 취하는 게임을 고려하십시오. 각 차례에서 우리는 arr[0]과 arr[1]을 비교하고 큰 값이 승리하여 위치 0에 남아 있고 작은 값이 배열의 끝으로 이동합니다. 이 게임은 가치가 연속 라운드에서 승리하면 종료됩니다. 배열에서 승자를 찾아야 합니다. 따라서 입력이 arr =[1,5,6,3,4,2] 및 k =3과 같으면 출력은 이기 때문에 6이 됩니다. 라운드 1, arr =[1,5,6,3,4,2], 승자 5
n x n 이진 행렬이 있다고 가정합니다. 한 단계에서 인접한 두 행을 선택하고 교체하는 것과 같은 작업을 수행할 수 있습니다. 행렬의 주요 대각선 위의 모든 노드가 0이 되도록 필요한 최소 스왑 수를 계산해야 합니다. 이러한 솔루션이 없으면 -1을 반환합니다. 따라서 입력이 다음과 같으면 0 1 0 0 1 1 1 0 0 출력은 2가 됩니다. - 이 문제를 해결하기 위해 다음 단계를 따릅니다. n :=행렬의 행 수 m :=크기가 n인 배열을 만들고 n으로 채움 범위 0에서 n - 1에 있는 i에 대
두 개의 문자열 s와 t가 있다고 가정하고 k 이동 이하로 s가 t로 변환될 수 있는지 확인해야 합니다. i번째 이동에서는 이러한 작업을 수행할 수 있습니다. 이전 이동에서 1 <=j <=크기 s 및 j가 선택되지 않도록 s에서 인덱스 j(1부터 시작)를 선택하고 해당 인덱스 i의 문자를 여러 번 이동합니다. 그대로 두십시오. 여기서 문자를 이동한다는 것은 알파벳의 다음 문자로 대체하는 것을 의미합니다(문자가 z인 경우 a로 줄바꿈). 따라서 문자를 i번 이동하는 것은 이동 작업을 i번 적용한다는 것을 나타냅니다.