목록 간격이 있다고 가정하고 정렬된 순서로 이들의 합집합을 찾아야 합니다. 따라서 입력이 inv =[[2, 5],[4, 10],[20, 25]]와 같으면 출력은 [[2, 10], [20, 25]] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 목록 간격 정렬 ans :=새 목록 각 시작과 끝(s, e) 간격에 대해 다음을 수행합니다. 만약 ans와 s가 <=ans의 마지막 간격의 종료 시간이면 as의 마지막 간격의 종료 시간 :=e의 최대값 및 ans의 마지막 간격의 종료 시간 그렇지 않으면 간격 [s, e]를 an
nums[j]와 같은 인덱스 i nums[i + 1]과 같은 인덱스 i와 i + 1이 있을 때입니다. 전역 역전 횟수가 로컬 역전 횟수와 같은지 확인해야 합니다. 따라서 입력이 nums =[3, 2, 4]와 같으면 인덱스 0과 1이 전역 및 로컬 반전이므로 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − l :=숫자 크기 0 ~ l - 3 범위의 i에 대해 i + 2 ~ l-1 범위의 j에 대해 숫자[j]이면 거짓을 반환 참 반환 이해를 돕기 위해 다음 구현을 살펴보겠습니다.
숫자 A와 B로 구성된 두 개의 목록과 다른 값 k가 있다고 가정하면 A에서 B의 최소한 k 요소보다 엄밀히 작은 요소의 수를 찾아야 합니다. 따라서 입력이 A =[6, -2, 100, 11] B =[33, 6, 30, 8, 14] k =3인 경우 출력은 -2, 6과 같이 3이 됩니다. 11은 B의 3개 요소보다 엄격하게 작습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − k가 0과 같으면 반환 크기 A B를 역순으로 정렬 ct :=0 A의 각 i에 대해 다음을 수행합니다. i
nums라고 하는 음수가 아닌 숫자 목록과 또 다른 양수 값 k가 있다고 가정합니다. 합이 k의 배수인지 아닌지 길이가 2 이상인 하위 목록이 있는지 확인해야 합니다. 따라서 입력이 nums =[12, 6, 3, 4] k =5와 같으면 하위 목록이 [12, 3] 합계가 15이고 5로 나눌 수 있으므로 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 합계 :=0 m :=새 지도 m[0] :=-1 0에서 숫자 크기 범위의 i에 대해 합계 :=합 + 숫자[i] sum :=합계 모드 k 합계가 m에 있
nums라는 숫자 목록과 또 다른 값 k가 있다고 가정하면 가장 큰 합계를 가진 k 하위 목록을 찾고 그 합계를 내림차순으로 반환해야 합니다. 따라서 입력이 nums =[2, 4, 5, -100, 12, -30, 6, -2, 6] k =3과 같으면 출력은 [10, 11, 12]가 됩니다. [6, -2, 6], [2, 4, 5], [12]의 합이 가장 큰 3개의 하위 목록이 있습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ps :=1 + 숫자 크기의 목록과 0으로 채움 각 인덱스 i와 값 v num에 대해 다음을
두 개의 값 r과 c가 있다고 가정합니다. 체스 기사가 무한히 큰 체스 판의 시작 부분에 좌표 (0, 0)에 배치되면 위치 (r, c)에 도달하는 데 필요한 최소 이동 수를 찾아야 합니다. 기사는 체스와 같은 이동 스타일을 따릅니다. 가로로 2칸, 세로로 1칸, 세로로 2칸, 가로로 1칸 이동합니다. 따라서 입력이 r =6, c =1과 같으면 출력은 3이 되고 빨간색은 초기 위치, 녹색은 최종 단계, 노란색은 중간 단계가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − r
네 개의 값 n, x, y 및 k가 있다고 가정합니다. 여기서 n은 n x n 체스판을 나타내고 x, y 좌표는 기사가 (x, y)에 배치되어 있음을 나타냅니다. 기사는 정확히 k 단계를 거쳐야 하며 각 단계에서 무작위로 균일하게 8방향을 이동할 수 있습니다. 기사가 k 이동 후 체스판에 남아 있을 확률(가장 가까운 정수)을 찾아야 합니다. 보드를 떠난 후에는 다시 들어갈 수 없다는 조건을 따라야 합니다. 따라서 입력이 n =8, (x =0, y =0), k =1과 같으면 출력은 50이 됩니다. 여기에는 8x8 체스판이 있고 기사
이진 트리가 있다고 가정하고 노드와 그 후손 간의 가장 큰 절대 차이를 찾아야 합니다. 따라서 입력이 다음과 같으면 노드 8과 1 사이에 가장 큰 절대 차이가 있으므로 출력은 7이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − dfs() 함수를 정의합니다. 노드가 필요합니다. 노드가 null이 아니면 양수 및 음수 무한대가 있는 목록 반환 left :=dfs(노드의 왼쪽) right :=dfs(노드의 오른쪽) res :=(left[0], right[0]의 최소값과 노드 값, left[1], right[
A와 B라는 두 개의 숫자 목록이 있고 길이가 같다고 가정합니다. 모든 0 ≤ i
이진 행렬이 있다고 가정합니다. 여기서 1은 육지를, 0은 물을 나타내며, 섬은 주변이 물로 둘러싸여 있는 이웃한 1의 그룹입니다. 매트릭스의 가장자리가 물로 둘러싸여 있다고 가정할 수 있습니다. 행렬에서 가장 큰 섬의 면적을 찾아야 합니다. 따라서 입력이 다음과 같으면 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 그러면 출력은 6이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − dfs() 함
nums라는 숫자 목록과 k번 연결된 숫자의 큰 목록을 나타내는 또 다른 값 k가 있다고 가정합니다. 가장 큰 합을 가진 인접한 하위 목록의 합을 찾아야 합니다. 따라서 입력이 nums =[1, 3, 4, -5], k =1과 같으면 출력은 [2, 4, 5]와 같은 하위 목록을 사용할 수 있으므로 11이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − s :=ans :=lo :=0 0에서 k와 2의 최소값 범위에 있는 모든 값에 대해 다음을 수행합니다. 숫자 단위의 각 x에 대해 다음을 수행합니다. s :=s + x
순환 목록을 나타내는 nums라는 숫자 목록이 있다고 가정합니다. 인접하지 않은 숫자의 가장 큰 합을 찾아야 합니다. 따라서 입력이 nums =[10, 3, 4, 8]과 같으면 10과 4를 사용할 수 있으므로 출력은 14가 됩니다. 10과 8은 인접해 있으므로 사용할 수 없습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=숫자 크기 nums1 :=nums[인덱스 0부터 n - 2까지] nums2 :=nums[인덱스 1부터 끝까지] f() 함수를 정의합니다. 이것은 내가 걸릴 것입니다 =nums1의 크기이면 0
타워 높이 목록과 양수 값 k가 있다고 가정합니다. 우리는 k개의 타워를 선택하고 더 많은 벽돌을 추가하여 가능한 한 적은 수의 벽돌을 사용하여 모두 같은 높이로 만들고 싶습니다. k개의 타워를 골라 같은 높이로 만드는 데 필요한 최소 벽돌 수를 찾아야 합니다. 따라서 입력이 heights =[4, 7, 31, 14, 40] k =3과 같으면 출력은 17이 됩니다. 동일한 높이를 만들기 위해 17개의 벽돌이 필요한 5, 8, 15를 선택할 수 있기 때문입니다. . 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 목록 높이
동일한 크기의 두 문자열 s와 t가 있다고 가정하고 s의 일부 순열(예:s1)과 t의 순열(예:t1)이 있는지 확인해야 합니다. s1[i] ≤ t1[i] for all 모든 0 ≤ i
회문인 문자열 s가 있다고 가정합니다. s가 더 이상 회문이 아니고 사전순으로 가장 작도록 한 문자를 변경해야 합니다. 따라서 입력이 s =level과 같으면 출력은 aevel이 됩니다. 첫 번째 l을 a로 변경하여 회문(palindrome)이 아닌 사전순으로 가장 작은 문자열을 얻을 수 있기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 범위 0에서 정수 부분(s / 2의 크기)에 대해 다음을 수행합니다. s[i]가 a와 같지 않으면 s :=s에 있는 모든 문자의 새 목록 s[i] :=아 s의 모든 문자를
데카르트 평면에 목록 좌표가 있다고 가정하면 좌표가 직선 세그먼트를 형성하는지 여부를 확인해야 합니다. 따라서 입력이 좌표 =[(5, 5),(8, 8),(9, 9)]와 같으면 출력은 True가 됩니다. 이러한 점이 기울기가 1인 선분을 형성하기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − (x0, y0) :=좌표[0] (x1, y1) :=좌표[1] 좌표 목록의 크기 - 1까지 범위 2의 i에 대해 (x, y) :=좌표[i] (x0 - x1) * (y1 - y)가 (x1 - x) * (y0 - y1)과 같지
단일 연결 목록과 target이라는 다른 값이 있다고 가정하고 주어진 목록에서 마지막으로 나타나는 target을 제거해야 합니다. 따라서 입력이 [5,4,2,6,5,2,3,2,4,5,4,7], target =5와 같으면 출력은 [5, 4, 2, 6 , 5, 2, 3, 2, 4, 4, 7, ] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 헤드:=노드 k :=null, 이전 :=null 찾음 :=거짓 노드가 null이 아닌 동안 수행 노드의 값이 대상과 같으면 찾음 :=사실 이전 :=k k :=노드 노드:=노드의 다음
연결된 목록이 있다고 가정합니다. 연결 리스트의 전반부를 가져와서 후반부를 접은 다음 교차하는 노드의 합을 취해 병합해야 합니다. 마지막으로 연결 목록의 결과 헤드를 반환해야 합니다. 따라서 입력이 [5,8,1,2,4,7,5]와 같으면 출력은 [2, 5, 15, 10, ]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 온도 :=0 ptr :=노드 ptr이 null이 아닌 동안 do temp :=온도 + 1 ptr :=ptr의 다음 t :=온도의 몫 / 2 m :=노드 stk :=새 스택 t가 0이 아닌 동안
두 개의 정렬된 연결 목록 L1과 L2가 있다고 가정하면 이 두 목록의 교집합을 포함하는 새로운 정렬된 연결 목록을 만들어야 합니다. 따라서 입력이 L1 =[2, 4, 8] L2 =[3, 4, 8, 10]과 같으면 출력은 [4, 8, ]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − head :=값이 0인 새 노드 cur :=머리 l1과 l2가 비어 있지 않은 동안 do l1의 값
단일 연결 목록과 다른 값 k가 있다고 가정합니다. k보다 작은 값을 갖는 모든 노드가 먼저 오고, k와 같은 값을 갖는 모든 노드가 다음에 오고, 마지막으로 다른 노드가 마지막에 오도록 노드를 정렬해야 합니다. 제약 조건은 노드의 상대적 순서가 동일하게 유지되어야 한다는 것입니다. 따라서 입력이 L =[4, 3, 6, 6, 6, 10, 8] k =6인 경우 출력은 [4, 3, 6, 6, 6, 10, 8, ] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − less_head :=0과 같은 값으로 연결 리스트 노드 생성 le