nums라는 숫자 목록이 있다고 가정하고 목록에서 하나 또는 0개의 요소를 제거할 수 있을 때 연속적으로 엄격하게 증가하는 하위 목록의 최대 길이를 찾아야 합니다. 따라서 입력이 nums =[30, 11, 12, 13, 14, 15, 18, 17, 32]와 같으면 출력은 7이 됩니다. 목록에서 18을 제거하면 [11, 12, 13, 14, 15, 17, 32] 가장 길고 연속적이며 엄격하게 증가하는 하위 목록이며 길이는 7입니다. 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- n :=숫자 크기 pre :=크기가
소문자 문자열 s가 있다고 가정하고 s에 있는 문자를 사용하여 만들 수 있는 피자 문자열 수를 찾아야 합니다. s의 문자는 순서에 상관없이 사용할 수 있지만 각 문자는 한 번만 사용할 수 있습니다. 따라서 입력이 ihzapezlzzilaop와 같으면 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − p_freq :=s에서 p의 빈도 i_freq :=s에서 i의 빈도 z_freq :=s에서 z의 빈도 a_freq :=s에서 a의 빈도 반환 최소값(p_freq, i_freq, z_freq/2 및 a_freq
숫자 목록이 있다고 가정하고 두 개의 개별 요소의 가장 큰 곱을 찾아야 합니다. 따라서 입력이 [5, 3, 7, 4]와 같으면 출력은 35가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − curr_max :=-inf 0부터 숫자 - 1까지의 범위에 있는 i에 대해 i+1 범위에서 nums - 1 크기의 j에 대해 curr_max이면 curr_max :=nums[i] * nums[j] curr_max 반환 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예시 class Solution: &nb
nums라는 숫자 목록이 있다고 가정하고 각 목록의 중앙값 간의 절대 차이가 가능한 한 작은 동일한 크기의 두 부분으로 나누어야 하며 이 차이를 찾아야 합니다. 여기서 nums / 2의 길이는 홀수임을 명심해야 합니다. 따라서 입력이 [2, 10, 8, 5, 4, 7]과 같으면 출력은 [2,5,10] 및 [4,7,8]과 같은 두 개의 목록을 만들 수 있으므로 2가 됩니다. , 중앙값은 5와 7이고 차이는 2입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 목록 번호 정렬 m :=nums/2 크기의 몫 반환 |숫자[m
두 개의 정렬된 목록 A와 B가 있다고 가정합니다. 우리는 그것들을 병합하고 오직 하나의 정렬된 목록 C를 형성해야 합니다. 목록의 크기는 다를 수 있습니다. 예를 들어 A =[1,2,4,7] 및 B =[1,3,4,5,6,8]이라고 가정하면 병합된 목록 C는 [1,1,2,3,4, 4,5,6,7,8] 우리는 재귀를 사용하여 이것을 해결할 것입니다. 따라서 기능은 아래와 같이 작동합니다 - x:=새 목록 i:=0, j:=0 i <(lst0)의 크기 및 j <(lst1)의 크기, do lst1[j]이면 x 끝에 lst1[j] 삽
nums라는 숫자 목록이 있다고 가정하고 목록을 임의의 순서(오름차순 또는 내림차순)로 정렬하려면 최소 비용을 찾아야 합니다. 여기서 비용은 요소의 이전 값과 새 값 간의 차이의 합계입니다. 따라서 입력이 [2, 5, 4]와 같으면 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − temp:=배열 번호 복사 목록 임시 정렬 c1:=0, c2:=0 n:=숫자 크기 0에서 n 사이의 i에 대해 nums[i]가 temp[i]와 같지 않으면 c1 :=c1 + |nums[i]-temp[i]| nums[i]가
nums라고 하는 숫자 목록이 있다고 가정하면 목록의 빈도가 값과 동일한 요소가 있는지 확인해야 합니다. 따라서 입력이 [2, 4, 8, 10, 4, 4, 4]와 같으면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − res :=가치별 빈도를 저장하는 새 지도 res의 각 키 값 쌍(k,v)에 대해 do k가 v와 같으면 참 반환 거짓을 반환 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예시 class Solution: def solve(self, nums)
목록의 모든 숫자가 간격 [1, n]에 있는 크기 n의 숫자라고 하는 숫자 목록이 있다고 가정합니다. 일부 요소는 두 번 나타날 수 있고 다른 요소는 한 번만 나타날 수 있습니다. 목록에 없는 [1, n]의 모든 숫자를 찾아야 합니다. 오름차순으로 정렬된 숫자를 반환해야 합니다. 선형 시간과 일정 공간이 필요한 솔루션을 찾아야 합니다. 따라서 입력이 [4, 4, 2, 2, 6, 6]과 같으면 출력은 [1, 3, 5]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − arr :=nums + 1 크기의 배열, 0으로
nums라는 숫자 목록이 있다고 가정하고 다음 기준을 유지하여 배열을 정렬해야 합니다. 짝수는 오름차순으로 정렬됩니다. 홀수는 내림차순으로 정렬됩니다. 짝수와 홀수의 상대 위치는 변경되지 않아야 합니다. 따라서 입력이 [9, 14, 12, 91, -4, 5]와 같으면 출력은 [91, -4, 12, 9, 14, 5]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − evens :=nums 배열의 짝수 항목 목록 odds :=nums 배열의 홀수 용어 목록 짝수 목록 정렬 even_i :=0, odd_i :=0 0
숫자 n이 있다고 가정합니다. 우리는 그것이 n의 자릿수의 합과 자릿수의 거듭제곱과 같은지 확인해야 합니다. 따라서 입력이 9474와 같으면 출력은 9^4 + 4^4 + 7^4 + 4^4 =6561 + 256 +2401 + 256 =9474로 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − s :=n의 숫자 목록 n이 s의 모든 x에 대해 x*(s의 크기)의 합과 같으면 true를 반환하고 그렇지 않으면 false를 반환합니다. 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예 class Solu
BST가 있고 왼쪽 및 오른쪽 경계 l과 r이 있다고 가정하면 루트에서 값이 l과 r(포함) 사이에 있는 모든 노드의 수를 찾아야 합니다. 따라서 입력이 다음과 같으면 l =7, r =13, 8, 10, 12의 세 노드가 있으므로 출력은 3이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- stack :=스택이고 처음에 루트 삽입, count :=0 스택이 비어 있지 않은 동안 수행 node :=스택의 최상위 요소, 팝 요소 노드가 null이 아니면 l <=노드의 데이터 <=r이면
크기가 n x n인 체스판을 나타내는 숫자 n이 있다고 가정합니다. 서로 공격하지 못하도록 n개의 루크를 배치할 수 있는 방법의 수를 찾아야 합니다. 여기서 두 가지 방법은 한 가지 방법으로 체스판의 일부 셀이 점유되고 다른 방법으로 셀이 점유되지 않는 경우 다른 것으로 간주됩니다. (루크가 같은 행이나 같은 열에 있는 경우 서로 공격할 수 있다는 것을 알고 있습니다.) 따라서 입력이 3과 같으면 출력은 6이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − f =n의 계승 f를 반환 이해를 돕기 위해 다음
숫자 n이 있다고 가정하면 n번째 피보나치 항을 찾아야 합니다. i번째 피보나치 항 f(i) =f(i-1) + f(i-2)를 알고 있듯이 처음 두 항은 0, 1입니다. 따라서 입력이 15와 같으면 출력은 610이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 첫 번째 :=0, 두 번째 :=1 2~n 범위의 i에 대해 다음을 수행합니다. temp :=첫 번째 + 두 번째 첫 번째 :=두 번째 초 :=온도 두 번째 반환 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예시 class Solution: &nb
숫자 n이 있다고 가정하고 해당 숫자의 이진 표현에 있는 비트 1의 수를 찾아야 합니다. 따라서 입력이 12와 같으면 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 카운트:=0 n이 0이 아닌 동안 do count :=count + (n AND 1) n :=(n / 2)의 바닥 반환 횟수 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예시 =1 return countob =Solution()print(ob.solve(12)) 입력 12 출력 2
고유한 값을 포함하는 이진 트리가 있고 또 다른 값 k가 있다고 가정하면 트리에서 k-길이 고유 경로의 수를 찾아야 합니다. 경로는 부모에서 자식으로 또는 자식에서 부모로 갈 수 있습니다. 어떤 노드가 한 경로에는 나타나지만 다른 경로에는 나타나지 않는 경우 두 경로를 서로 다른 것으로 간주합니다. 따라서 입력이 다음과 같으면 k =3이면 경로가 [12,8,3], [12,8,10], [8,12,15], [3,8,10]이므로 출력은 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따르겠습니다- dfs() 함수를 정의
소문자 문자열이 있다고 가정하고 하나의 고유한 문자를 포함하는 하위 문자열의 총 수를 찾아야 합니다. 따라서 입력이 xxyy와 같으면 하위 문자열이 [x, x, xx, y, y, yy]이므로 출력은 6이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 총계:=0 이전 :=빈 문자열 s의 각 문자 c에 대해 다음을 수행합니다. c가 이전과 같지 않으면 이전 :=c 온도 :=1 그렇지 않으면 temp :=온도 + 1 총계 :=총계 + 온도 총 수익 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예 c
하나의 숫자 n이 있다고 가정하고 처음 n개의 양의 홀수의 합을 찾아야 합니다. 따라서 입력이 7과 같으면 출력은 [1+3+5+7+9+11+13] =49와 같이 49가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n이 0과 같으면 0을 반환 합계:=1, 개수:=0, 온도:=1 카운트
nums라고 하는 양수 목록이 있다고 가정하고 홀수 자릿수를 가진 요소의 수를 찾아야 합니다. 따라서 입력이 [1, 300, 12, 10, 3, 51236, 1245]와 같으면 출력은 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − c:=0 0에서 숫자 크기 범위의 i에 대해 s:=숫자의 자릿수[i] s가 홀수이면 c:=c+1 반환 c 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예 class Solution: def solve(self, nums): &
더 오래된 문자열과 더 새로운 문자열이 있다고 가정합니다. 이 두 가지는 major.minor.patch 형식의 소프트웨어 패키지 버전을 나타내며 최신 버전이 실제로 이전 버전보다 최신인지 확인해야 합니다. 따라서 입력이 old =7.2.2, newer =7.3.1인 경우 출력은 True 이 문제를 해결하기 위해 다음 단계를 따릅니다. − older :=이전 버전의 메이저, 마이너, 패치 코드 목록 newer:=최신 버전의 주요, 부, 패치 코드 목록 더 오래된 목록 크기의 i에 대해 :=이전[i], n :=최신[i] o이면
양수 nums 목록이 있다고 가정하고 유효한 인덱스 쌍(i, j)의 수를 찾아야 합니다. 여기서 i