nums라는 숫자 목록과 다른 값 대상이 있다고 가정합니다. 각 쌍에 대해 i =대상입니다. 따라서 입력이 nums =[2, 4, 6, 10, 11], target =5와 같으면 쌍을 얻을 수 있으므로 출력은 2가 됩니다. (2, 6), (5, 10) 이 문제를 해결하기 위해 다음 단계를 따릅니다. − N :=A의 크기 목록 A 정렬 ans :=0 j :=N / 2 0 ~ N/2 범위의 i에 대해 다음을 수행합니다. j
연결된 목록이 있다고 가정합니다. 인접한 두 노드(쌍)를 모두 교환하고 헤드를 반환해야 합니다. 여기서 제약 조건은 노드 값을 수정할 수 없으며 노드 자체만 변경할 수 있다는 것입니다. 따라서 목록이 [1,2,3,4]와 같으면 결과 목록은 [2,1,4,3]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 머리가 없으면 머리를 반환 첫 번째 :=헤드, 두 번째 :=헤드 다음, 더미는 값이 -1인 하나의 새 노드입니다. 더미의 다음 :=첫 번째, 이전 :=더미 초가 null이 아닌 동안 temp :=다음 초 첫 번째
연결된 목록이 있다고 가정합니다. 목록 요소가 회문을 형성하는지 여부를 확인해야 합니다. 따라서 목록 요소가 [5,4,3,4,5]와 같으면 이것은 회문이지만 [5,4,3,2,1]과 같은 목록은 회문이 아닙니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 빠름 :=헤드, 느림 :=헤드, rev :=없음 및 플래그 :=1 머리가 비어 있으면 true를 반환합니다. 단식과 다음 단식을 사용할 수 있는 동안 다음 단식을 사용할 수 있는 경우 플래그를 0으로 설정하고 루프를 끊습니다. 빠른 :=빠른 다음의 다음 temp :=느림
문자열 s가 있다고 가정하고 s의 순열이 회문인지 여부를 확인해야 합니다. 따라서 입력이 s =admma와 같으면 admma를 회문인 madam으로 재정렬할 수 있으므로 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − c :=s의 각 개별 문자 수를 담고 있는 지도 카운트:=0 c의 모든 값 목록에 있는 각 i에 대해 do 내가 홀수이면 카운트가 0과 같으면 카운트 :=카운트 + 1 루프에서 나오다 거짓을 반환 참 반환 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예 from
각 노드에 0-9 사이의 숫자가 포함된 이진 트리가 있다고 가정하고 해당 노드의 순회가 회문인지 여부를 확인해야 합니다. 따라서 입력이 다음과 같으면 그러면 출력은 중위 순회가 [2,6,10,6,2]이므로 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 루트가 null이면 참 반환 스택 :=새 스택 curr :=루트 inorder :=새 목록 스택이 비어 있지 않거나 curr이 null이 아닌 동안 do curr이 null이 아닌 동안 do curr를 스택에 푸시 curr :=curr의 왼쪽
이진 트리가 있다고 가정하고 첫 번째 숫자는 트리의 잎 개수이고 두 번째 숫자는 잎이 아닌 노드의 개수인 두 개의 숫자 목록을 찾아야 합니다. 따라서 입력이 다음과 같으면 3개의 잎과 2개의 잎이 아닌 노드가 있으므로 출력은 (3, 2)가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n이 null이면 반환(0, 0) n의 왼쪽이 null이고 n의 오른쪽이 null이면 반환(1, 0) left :=해결(n의 왼쪽) right :=해결(n의 오른쪽) 반환(왼쪽[0] + 오른쪽[0], 1 + 왼쪽[1]
값 0, 1 및 2를 포함하는 이진 트리가 있다고 가정합니다. 루트에는 최소한 하나의 0 노드와 하나의 1 노드가 있습니다. 이제 트리에서 가장자리를 삭제하고 트리가 두 개의 다른 트리가 되는 작업이 있다고 가정합니다. 우리는 두 트리 중 어느 것도 0 노드와 1 노드를 모두 포함하지 않도록 한 가장자리를 삭제할 수 있는 방법의 수를 찾아야 합니다. 따라서 입력이 다음과 같으면 0에서 2까지의 가장자리만 삭제할 수 있으므로 출력은 1이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 카운트 :=[0, 0, 0
동전과 급여라고 하는 두 개의 양수 목록이 있다고 가정합니다. 여기서 코인[i]은 코인 i의 가치를 나타내고, 급여[j]는 근로자 j에게 지불해야 하는 최소 급여 금액을 나타냅니다. 이제 유형당 하나의 동전이 있고 각 작업자에게 정확히 하나의 동전을 주어야 한다고 가정하고 각 작업자에게 동전을 주는 방법의 수를 계산해야 합니다. 여기서 어떤 작업자가 한 가지 방법으로 한 가지 유형의 동전을 받고 다른 방법으로 다른 유형의 동전을 받는 경우 두 가지 방법이 다릅니다. 결과가 매우 크면 결과 모드 10^9+7을 반환합니다. 따라서 입
가중치와 값이라고 하는 길이가 같은 두 개의 목록이 있고 또 다른 가치 용량이 있다고 가정합니다. 여기서 weights[i]와 values[i]는 i번째 항목의 가중치와 값을 나타냅니다. 최대 용량 가중치를 사용할 수 있고 각 항목에 대해 원하는 만큼의 사본을 사용할 수 있다면 얻을 수 있는 최대 가치를 찾아야 합니다. 따라서 입력이 weight =[1, 2, 3], values =[1, 5, 3], capacity =5인 경우 출력은 11이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − dp() 함수를 정의
num이라는 배열이 있다고 가정하고 가장 큰 곱을 갖는 배열(최소한 하나의 숫자를 포함) 내에서 인접한 하위 배열 요소의 곱을 찾아야 합니다. 따라서 배열이 [1,9,2,0,2,5]이면 인접한 하위 배열 [1,9,2]에 최대 곱이 있으므로 출력은 18이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − max_list :=크기 숫자 목록, 0으로 채우기 min_list :=크기 숫자 목록, 0으로 채우기 min_list :=크기 숫자 목록, 0으로 채우기 1에서 nums 길이까지의 i에 대해 max_list[i] =m
음이 아닌 정수 n개의 배열이 있다고 가정합니다. 이것들은 각 막대의 너비가 1인 높이를 나타냅니다. 우리는 비가 온 후 얼마나 많은 물을 잡을 수 있는지 계산해야 합니다. 따라서 지도는 다음과 같을 것입니다 - 여기에서 8개의 파란색 상자가 있는 것을 볼 수 있으므로 출력은 8이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 스택 st, water :=0 및 i :=0 정의 i <높이의 크기 =height[i]인 경우 i를 스택에 푸시하고 i를 1만큼 증가시킵니다. 그렇지 않으면 x :=스택 상단 요소, 스
nums라는 숫자 목록과 작업 목록이 있다고 가정합니다. 여기서 각 연산에는 세 개의 필드 [L, R, X]가 있습니다. 이는 인덱스 L에서 R(포함)까지 모든 요소를 X만큼 증가시켜야 함을 나타냅니다. 모든 작업을 적용하고 최종 목록을 반환해야 합니다. 따라서 입력이 nums =[8, 4, 2, -9, 4] operations =[ [0, 0, 3], [1, 3, 2], [2, 3, 5] ]와 같은 경우 초기 목록이 [8, 4, 2, -9, 4]였으므로 출력은 [11, 6, 9, -2, 4]가 됩니다. 첫 번째 작업 [0,
nums라는 숫자 목록이 있고 목록에 여러 번 나타나는 숫자를 제거해야 하고 원래 목록에 나타나는 순서도 유지해야 한다고 가정합니다. 따라서 입력이 nums =[2, 4, 6, 1, 4, 6, 9]와 같으면 이러한 요소가 한 번만 나타나므로 출력은 [2, 1, 9]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − dict :=새 지도 숫자 단위의 각 i에 대해 다음을 수행합니다. 내가 사전에 없으면 딕셔너리[i] :=0 dict[i] :=dict[i] + 1 dict[e]가 1인 숫자의 모든 요소 e를
숫자의 연결 목록이 있다고 가정하고 연결 목록에 여러 번 나타나는 숫자를 제거해야 하고(출력에서 한 번만 유지) 원래 연결 목록에 나타나는 순서도 유지해야 합니다. 9]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 노드가 null이 아니면 l :=새로운 세트 temp :=노드 l에 temp 값 삽입 temp의 다음이 null이 아닌 동안 do temp의 다음 값이 l에 없으면 l에 다음 temp 값 삽입 temp :=다음 temp 그렇지 않으면 다음 임시:=다음 임시 반환 노드 이해를
괄호 문자열이 있다고 가정합니다. 문자열을 올바르게 만들기 위해 제거해야 하는 최소 괄호 수를 계산하는 함수를 작성해야 합니다(각 열린 괄호는 결국 닫힙니다). 따라서 입력이 (()))(와 같으면 올바른 문자열이 (())이므로 출력은 2가 됩니다. )(를 제거하십시오. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 총계:=0, 온도:=0 s의 각 p에 대해 다음을 수행합니다. p가 (와 같으면 총계 :=총계 + 1 그렇지 않고 p가 )와 같고 total이 0이 아닌 경우 총계 :=총계 - 1 그렇지 않으면 temp
문자열 s가 있다고 가정하고 첫 번째 연속 중복 문자를 반복적으로 삭제합니다. 마지막 문자열을 찾아야 합니다. 따라서 입력이 s =xyyyxxz와 같으면 yyy가 삭제될 첫 번째 연속 중복 문자이므로 출력은 z가 됩니다. 그래서 우리는 xxxz가 있습니다. 그런 다음 xxx가 삭제되어 z로 끝납니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 스택 :=새 스택 i :=0 i
2가 됩니다. 이 문제를 해결하기 위해 우리는 이 접근 방식을 따를 것입니다 - solve(head, back)와 같은 재귀적 방식으로 목록 반전을 수행하는 하나의 프로시저 정의 머리가 없으면 머리를 반환 temp :=head.next head.next :=뒤로 뒤:=머리 temp가 비어 있으면 head를 반환합니다. 머리 :=온도 반환 해결(머리, 뒤로) 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예 class ListNode: def __init__(self, data, next = None
방향 그래프가 있다고 가정하고 그 반대 방향을 찾아야 하므로 간선이 u에서 v로 이동하면 이제 v에서 u로 이동합니다. 여기서 입력은 인접 목록이 될 것이며 n개의 노드가 있는 경우 노드는 (0, 1, ..., n-1)이 됩니다. 따라서 입력이 다음과 같으면 그러면 출력은 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ans :=n개의 서로 다른 목록의 목록, 여기서 n은 정점의 수입니다. 그래프의 각 인덱스 i와 인접 목록 l에 대해 다음을 수행합니다. l의 각 x에 대해 다음을 수행합니다. as[x] 끝에 i
단일 연결 목록이 있고 또 다른 값 k가 있다고 가정하면 모든 k개의 인접한 노드 그룹을 반대로 해야 합니다. 따라서 입력이 List =[1,2,3,4,5,6,7,8,9,10], k =3인 경우 출력은 [3, 2, 1, 6, 5 , 4, 9, 8, 7, 10, ] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − tmp :=값이 0인 새 노드 tmp 다음:=노드 이전 :=null, curr :=null lp :=임시, lc :=현재 cnt :=k curr이 null이 아닌 동안 do 이전 :=null 0이고 curr이 nu
무게라고 하는 숫자 목록이 있고 이것이 사람들의 무게를 나타내고 값 제한이 로켓 한 척의 무게 제한을 결정한다고 가정합니다. 이제 각 로켓에는 최대 2명이 탑승할 수 있습니다. 우리는 모두를 행성으로 구출하는 데 필요한 최소한의 로켓 선박 수를 찾아야 합니다. 따라서 입력이 weight =[300, 400, 300], limit =600과 같으면 출력은 2가 됩니다. 각각의 무게가 300인 두 사람을 태우려면 로켓 한 척이 필요하고 다른 두 사람을 데려가려면 다른 로켓이 필요하기 때문입니다. 체중이 400인 사람. 이 문제를 해