숫자 n과 p와 q가 있다고 가정합니다. 이제 우리가 n명의 사람들이 줄을 서서 서 있다고 가정합니다. 우리는 우리가 어떤 위치에 있는지 모르지만 우리 앞에는 적어도 p 사람이 있고 우리 뒤에는 기껏 q 사람이 있다는 것을 압니다. 가능한 위치의 수를 찾아야 합니다. 따라서 입력이 n =10, p =3, q =4와 같으면 10명이 있고 최소 3명이 앞에 있고 최대 4명이 뒤에 있기 때문에 출력은 5가 됩니다. 따라서 인덱스 [0, 1, 2, 3, 4]에 설 수 있습니다. 예를 들어 인덱스 0에서 9명이 앞에 있고 0명이 뒤에
시간순으로 회사의 주가를 나타내는 가격 목록이 있다고 가정하면 해당 주식을 한 번만 사고 팔 때 얻을 수 있는 최대 이익을 찾아야 합니다. 우리는 그것을 팔기 전에 먼저 사야 한다는 것을 명심해야 합니다. 따라서 입력이 가격 =[10, 12, 9, 6, 8, 12]와 같으면 출력은 6이 됩니다. 6에서 사고 12에서 팔 수 있기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 최대 수익 :=0 최소 재고 :=무한대 가격의 각 가격에 대해 다음을 수행합니다. max_profit :=max_profit의 최대값 및
무방향 그래프가 하나 있다고 가정하고 그래프가 이분법인지 여부를 확인해야 합니다. 그래프의 모든 모서리 {u,v}가 A의 노드 u와 B의 노드 v를 갖도록 그래프의 노드를 두 세트 A와 B로 나눌 수 있을 때 그래프가 이분법이라는 것을 알 수 있습니다. 따라서 입력이 다음과 같으면 그러면 출력은 True, [0,4]는 집합 A에 있고 [1,2,3]은 집합 B에 있으며 모든 모서리는 A에서 A 또는 B에서 B가 아니라 A에서 B 또는 B에서 A입니다. . 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- dfs() 함
시간 순서대로 회사의 주가를 나타내는 가격 목록이 있다고 가정하고 해당 주식을 여러 번 사고 팔 때 얻을 수 있는 최대 이익을 찾아야 합니다. 우리는 그것을 팔기 전에 먼저 사야 한다는 것을 명심해야 합니다. 따라서 입력이 가격 =[10, 50, 30, 40, 60]과 같으면 출력은 70이 됩니다. 우리는 10에서 사고, 50에서 팔고, 30에서 사고, 60에서 팔 수 있기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − prev_price :=무한대 이익:=0 가격의 각 p에 대해 다음을 수행합니다. pre
nums라는 숫자 목록과 또 다른 숫자 k가 있다고 가정합니다. 인덱스 k와 인덱스 i에서 시작하면 정확히 nums[i] 단계만큼 왼쪽이나 오른쪽으로 이동할 수 있습니다. 목록의 끝에 도달할 수 있는지 여부를 확인해야 합니다. 따라서 입력이 nums =[0, 0, 2, 1, 3, 3, 1, 1] k =2와 같으면 출력은 인덱스 2에서 시작한 다음 인덱스 4로 점프하는 것처럼 True가 됩니다. 그런 다음 마지막 인덱스 7로 이동합니다. 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- n:=숫자 크기 방문:=크기가
단어라는 문자열 목록과 문자라는 또 다른 문자열이 있다고 가정하면 문자의 문자로 구성될 수 있는 단어에서 가장 긴 문자열의 길이를 찾아야 합니다. 단어를 만들 수 없으면 0을 반환합니다. 여기서 문자를 재사용할 수 없습니다. 따라서 입력이 단어 =[개, 고양이, 쥐, 토끼, 사자, 박쥐], 문자 =gabctnyu와 같은 경우 출력은 3이 됩니다. 단어 cat 또는 bat를 만들 수 있으므로 최대 길이는 3입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ref :=문자와 그 빈도가 있는 지도 최대 :=0 단어의 각
하나의 n x n 행렬 M이 있다고 가정하고 행렬에서 Z 모양을 형성하는 모든 요소의 합을 찾아야 합니다. 따라서 입력이 다음과 같으면 4 3 2 9 1 8 2 5 6 요소가 [4+3+2+1+2+5+6] =23이므로 출력은 23이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=행렬의 행 수 n <=2이면 행렬에 있는 모든 요소의 합계 반환 first_row :=첫 번째 행의 합계 last_row :=마지막 행의 합계 대각선 =1에서 n-2까지의 모든 i에 대한 행렬[i, n-1-i]의 합 f
길이가 같은 가중치와 값이라는 두 개의 목록과 용량 k라는 또 다른 숫자가 있다고 가정합니다. 여기서 weights[i]와 values[i]는 i번째 항목의 가중치와 값을 보여줍니다. 이제 우리는 최대 k개의 용량 가중치를 취할 수 있고 각 항목의 최대 하나의 사본만 취할 수 있으므로 얻을 수 있는 최대 가치를 찾아야 합니다. 따라서 입력이 weight =[2, 3, 4], values =[2, 6, 4], capacity =6인 경우 출력은 8이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n:=가중치 크
두 개의 이진 문자열과 b가 있다고 가정하고 이 이진수를 더하고 그 합을 문자열로 찾아야 합니다. 따라서 입력이 =10110, b =10010과 같으면 출력은 101000이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ret :=빈 문자열 na :=크기, nb :=b 크기 i :=na - 1, j :=nb - 1 캐리:=0 =0) 다음을 수행합니다. =0이면 a[i] - 0의 ASCII, 그렇지 않으면 0) =0이면 b[j] - 0의 ASCII, 그렇지 않으면 0) 합계 :=addA + addB + 캐리 car
nums라고 하는 숫자 목록이 있고 nums[i]에서 버스가 역 i에 도착해야 하는 시간을 나타내는 라인에 버스 정류장을 표시한다고 가정합니다. 이제 버스는 앞으로만 이동할 수 있으므로 모든 정류장을 통과하는 데 필요한 최소 버스 수를 찾아야 합니다. 따라서 입력이 nums =[1, 2, 7, 9, 3, 4]와 같으면 출력은 2가 됩니다. 한 버스는 [1, 2, 3, 4] 정차하고 다른 버스는 [ 7, 9]. 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- 답변 :=0 본 :=길이가 숫자와 같고 처음에 거짓으로 채
n개의 계단이 있는 계단이 있고 한 번에 1 또는 2개의 계단을 오를 수 있다고 가정합니다. 계단을 오를 수 있는 고유한 방법의 수를 반환하는 함수를 정의해야 합니다. 단계의 순서는 변경되지 않아야 하므로 단계의 각 다른 순서가 방법으로 간주됩니다. 답이 매우 크면 결과를 10^9 + 7로 수정합니다. 따라서 입력이 n =5와 같으면 8가지 고유한 방법이 있으므로 출력은 8이 됩니다 - 1, 1, 1, 1, 1 2, 1, 1, 1 1, 2, 1, 1 1, 1, 2, 1 1, 1, 1, 2 1, 2, 2 2, 1, 2 2, 2,
n개의 계단이 있는 계단이 있고 또 다른 숫자 k가 있다고 가정합니다. 처음에는 계단 0에 있고 한 번에 1, 2 또는 3개의 계단을 오를 수 있습니다. 그러나 우리는 최대 k번의 계단 3개만 오를 수 있습니다. 이제 우리는 계단을 오를 수 있는 방법의 수를 찾아야 합니다. 따라서 입력이 n =5, k =2와 같으면 계단을 오를 수 있는 다양한 방법이 있으므로 출력은 13이 됩니다. [1, 1, 1, 1, 1] [2, 1, 1, 1] [1, 2, 1, 1] [1, 1, 2, 1] [1, 1, 1, 2] [1, 2, 2] [2,
nums라는 숫자 목록과 또 다른 숫자 k가 있다고 가정합니다. 인덱스 k와 인덱스 i에서 시작하면 정확히 nums[i] 단계만큼 왼쪽이나 오른쪽으로 이동할 수 있습니다. 목록의 끝에 도달할 수 있는지 여부를 확인해야 합니다. 따라서 입력이 nums =[0, 0, 2, 1, 3, 3, 1, 1] k =2와 같으면 출력은 인덱스 2에서 시작한 다음 인덱스 4로 점프하는 것처럼 True가 됩니다. 그런 다음 마지막 인덱스 7로 이동합니다. 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- n:=숫자 크기 방문:=크기가
nums라는 숫자 목록이 있다고 가정하고 이제 모든 인접한 하위 배열을 고려합니다. 이 하위 배열 각각을 합하고 이 모든 값의 합을 반환합니다. 마지막으로 결과를 10 ** 9 + 7로 수정합니다. 따라서 입력이 nums =[3, 4, 6]과 같으면 다음과 같은 하위 배열이 있으므로 출력은 43이 됩니다. - [3] [4] [6] [3, 4] [4, 6] [3, 4, 6] 이들의 합은 43입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − N:=숫자 크기 an:=0 0~숫자 크기 범위의 i에 대해 n:=숫자[i] a
길이가 같은 두 개의 비어 있지 않은 문자열 s와 t가 있다고 가정합니다. s와 t 부분 문자열의 각 쌍이 같은 크기이고 서로의 아나그램이 되도록 부분 문자열로 분할해야 합니다. 이제 s와 t의 최대 절단 수가 되도록 절단 인덱스를 찾으십시오. 결과가 없으면 빈 목록을 반환합니다. 따라서 입력이 s =bowcattiger t =owbactietgr과 같으면 출력은 [0, 3, 5, 6, 10]이 됩니다. 각 문자열이 다음과 같이 되도록 문자열을 5개의 파티션으로 분할할 수 있기 때문입니다. 서로의 아나그램. s =[활, ca, t
카드 목록이 있고 카드가 오름차순으로 표시되도록 순서를 지정하려고 한다고 가정합니다. 우리가 알다시피, 카드는 다음과 같은 방식으로 공개됩니다. 1. 가장 맨 위에 있는 카드가 제거되고 공개되고 다음 카드가 뒤로 갑니다. 2. 더 이상 카드가 없을 때까지 1단계를 반복합니다. 오름차순으로 표시되도록 카드의 순서를 찾아야 합니다. 따라서 입력이 카드 =[1, 2, 3, 4, 5, 6, 7, 8]과 같으면 출력은 [1, 5, 2, 7, 3, 6, 4, 8]이 됩니다. 1이 제거되고 5가 뒤로 이동하므로 현재 상황[2, 7, 3, 6,
단일 연결 목록 노드가 있다고 가정하고 중간 노드의 값을 찾아야 합니다. 그리고 두 개의 중간 노드가 있으면 두 번째 노드를 반환합니다. 이 문제를 단일 패스로 해결해야 합니다. 따라서 입력이 [5,9,6,4,8,2,1,4,5,2]와 같으면 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- p:=노드 d:=0, l:=0 노드가 null이 아닌 동안 수행 d가 2와 같지 않으면 node:=노드의 다음 l :=l + 1, d :=d + 1 그렇지 않으면 p:=
nums라는 숫자 목록이 있다고 가정합니다. 인덱스 i의 값이 오른쪽에 있는 nums[i]보다 큰 다음 요소에 할당되는 동일한 길이의 새 목록을 찾아야 하며 필요할 때 목록의 맨 앞으로 다시 돌아갑니다. 더 큰 숫자가 없으면 -1로 설정해야 합니다. 따라서 입력이 [4, 5, 1, 3]과 같으면 출력은 [5, -1, 3, 4]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- n :=a의 크기 stack :=스택, 처음에 0 삽입, res :=크기가 n인 목록 및 -1로 채우기 범위 0과 1의 각 값
이진 트리가 있다고 가정하고 루트 노드에서 리프 노드로 가는 경로의 가장 큰 합을 찾아야 합니다. 따라서 입력이 다음과 같으면 루트에서와 같이 출력은 29가 되고 5-<9-<7-<8 경로를 따르면 추가 후 29가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- Walk() 함수를 정의하십시오. 노드가 필요합니다. s 노드가 null이면 max_sum :=max_sum 및 s의 최대값 반환 s :=s + 노드의 데이터 걷기(노드 왼쪽, s) 걷기(노드 오른쪽, s)
각 셀이 일부 동전을 저장하는 2D 행렬이 있다고 가정합니다. [0,0]에서 시작하여 오른쪽이나 아래쪽으로만 이동할 수 있는 경우 오른쪽 하단 모서리에서 수집할 수 있는 최대 동전 수를 찾아야 합니다. 따라서 입력이 다음과 같으면 1 4 2 2 0 0 0 5 경로를 선택하면 출력은 14가 됩니다. [1, 4, 2, 2, 5] 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- 범위 1에서 A의 행 수까지 r에 대해 수행 A[r, 0] :=A[r, 0] + A[r-1, 0]