숫자 n이 있다고 가정하고 n보다 작은 모든 소수의 목록을 오름차순으로 생성해야 합니다. 1은 소수가 아님을 명심해야 합니다. 따라서 입력이 12와 같으면 출력은 [2, 3, 5, 7, 11]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − sieve :=크기가 n+1인 목록 및 True로 채우기 primes :=새 목록, 처음에는 비어 있음 2~n 범위의 i에 대해 다음을 수행합니다. sieve[i]가 True이면 소수 끝에 i 삽입 i에서 n 사이의 j에 대해 i만큼 각 단계에서 업데이트합니다. do 체[j
nums라고 하는 양수 목록이 있다고 가정하고 각 숫자를 나누는 가장 큰 양수를 찾아야 합니다. 따라서 입력이 [14,28,70,56]과 같으면 출력은 14가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ans :=숫자의 첫 번째 요소 숫자 단위의 각 x에 대해 다음을 수행합니다. ans :=ans 및 x의 gcd 반환 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예 import math class Solution: def solve(self, nums): &nb
nums라는 숫자 목록이 있다고 가정하고 다음과 같이 목록을 1개 이상의 그룹으로 나눌 수 있는지 확인해야 합니다. 1. 각 그룹의 크기가 2보다 크거나 같습니다. 2. 모든 그룹의 크기가 동일합니다. . 3. 각 그룹에 있는 모든 숫자는 동일합니다. 따라서 입력이 [3, 4, 6, 9, 4, 3, 6, 9]와 같으면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − counts :=각 키가 고유한 요소이고 값이 빈도인 맵 온도 :=0 카운트의 각 카운트에 대해 다음을 수행합니다. temp가 0과
음수가 아닌 숫자 n이 있다고 가정하고 r * r =n이 되도록 숫자 r을 찾고 가장 가까운 정수로 내림해야 합니다. 내장된 제곱근 함수를 사용하지 않고 이 문제를 해결해야 합니다. 따라서 입력이 1025와 같으면 출력은 32가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n <=1이면 반환 n 시작:=1, 끝:=n 시작하는 동안 <끝, 수행 mid :=시작 + 끝/2 mid * mid <=n이면 시작 :=중간 + 1 그렇지 않으면 끝 :=중간 반환 시작 - 1 이해를 돕기 위해 다음 구현을
숫자 n이 있다고 가정합니다. 하나의 Happy number인지 확인하겠습니다. 알다시피 행복한 숫자는 숫자입니다. 여기서 양의 정수로 시작하면 숫자가 해당 숫자의 제곱의 합으로 바뀝니다. 이 프로세스는 1이 될 때까지 반복됩니다. 그렇지 않으면 순환에서 끝없이 반복됩니다. 그 숫자들은 1이 찾았을 때 행복한 숫자가 될 것입니다. 따라서 입력은 19와 같으며 숫자가 행복한 숫자이므로 출력은 true가 됩니다. 19에서 볼 수 있듯이 12 + 92 =82 82 + 22 =68 62 + 82 =100 12 + 02 + 02 =
숫자 n이 있다고 가정하고 숫자의 아무 곳에나 5를 삽입하여 만들 수 있는 최대 숫자를 찾아야 합니다. 따라서 입력이 n =826과 같으면 출력은 8526이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − temp :=n을 문자열로 ans :=-inf 0에서 temp 크기의 범위에 있는 i에 대해 cand :=인덱스 0에서 i까지 temp의 하위 문자열 5 연결 인덱스 i에서 끝까지 temp의 하위 문자열 연결 i가 0과 같고 temp[0]이 -와 같으면 다음 반복으로 이동 ans :=ans의 최대값, can
nums라는 숫자 목록이 있다고 가정하고 가장 자주 표시되는 요소를 찾고 해당 요소의 발생 횟수를 가져와야 합니다. 따라서 입력이 [1,5,8,5,6,3,2,45,7,5,8,7,1,4,6,8,9,10]과 같으면 출력은 다음과 같습니다. 3은 숫자 5가 3번 나오므로 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 최대:=0 길이:=숫자 크기 0에서 길이-2 사이의 i에 대해 개수:=1 i+1 ~ length-1 범위의 j에 대해 nums[i]가 nums[j]와 같으면 카운트 :=카운트 + 1 최대 <개수인 경우
정렬된 숫자 목록이 있다고 가정합니다. 각 요소를 제곱하고 정렬된 순서로 출력을 찾아야 합니다. 음수와 0을 입력할 수도 있습니다. 따라서 입력이 [-12,-6,-5,-2,0,1,2,4,8,9,10,15,18,20,35,38,69]와 같으면 출력은 [0,1, 4, 4, 16, 25, 36, 64, 81, 100, 144, 225, 324, 400, 1225, 1444, 4761] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 새 목록 만들기 L nums의 각 요소 e에 대해: E^2를 L에 삽입 L을 정렬된 순서로 반
문자열 s와 두 개의 정수 i와 j가 있다고 가정합니다(i
숫자 nums의 목록이 있다고 가정하고 목록을 제자리에서 업데이트하여 목록의 끝에 모든 0을 넣어야 합니다. 그리고 다른 요소들의 상대적인 순서는 바뀌지 않아야 합니다. 우리는 이것을 O(1) 추가 공간에서 해결하려고 노력해야 합니다. 따라서 입력이 [2,0,1,4,0,5,6,4,0,1,7]과 같으면 출력은 [2, 1, 4, 5, 6, 4, 1이 됩니다. , 7, 0, 0, 0] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − L의 크기가 0과 같으면 빈 목록 반환 k :=0 0~L 크기 범위의 i에 대해 L[i]가
숫자 n이 있다고 가정하고 이 숫자에 해당하는 밑수 3을 문자열로 찾아야 합니다. 따라서 입력이 17과 같으면 출력은 122가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n<0:인 경우 기호 :=-1 그렇지 않으면 부호 :=공백 문자열 n :=|n| n <3이면 n을 문자열로 반환 :=빈 문자열 n이 0과 같지 않은 동안 do s :=(n mod 3) 연결 s의 문자열 n :=(n / 3)의 몫 반환 기호 연결 s 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예시 class Soluti
두 개의 문자열 s와 t가 있다고 가정하고 첫 번째 문자열 s로 시작하여 인터리브 처리된 두 개의 문자열을 찾아야 합니다. 문자열에 남은 문자가 있으면 끝에 추가됩니다. 따라서 입력이 s =abcd, t =pqrstu와 같으면 출력은 apbqcrdstu가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − res:=빈 문자열 i:=0 m:=s 크기의 최소값, t 크기 내가
각 간격이 [시작, 종료]와 같은 간격 목록이 있다고 가정합니다. 이는 간격(포함)의 시작 및 종료 시간을 나타냅니다. 이들의 교차점, 즉 주어진 모든 간격 내에 있는 간격을 찾아야 합니다. 따라서 입력이 [[10, 110],[20, 60],[25, 75]]와 같으면 출력은 [25, 60]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − start, end :=간격 목록에서 마지막 요소를 삭제한 후 간격 간격이 비어 있지 않은 동안 수행 start_temp, end_temp :=간격 목록에서 마지막 요소를 삭제한
숫자가 있다고 가정하면 n(n!)의 계승이 n과 같도록 n을 찾아야 합니다. 우리가 알고 있듯이 계승 n =n * (n - 1) * (n - 2) * ... * 1. 그러한 정수 n이 없으면 -1을 반환합니다. 따라서 입력이 a =120과 같으면 출력은 5가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − i :=0, 숫자 :=1 L:=새 목록 나는 <, 하는 동안 i :=num의 계승 L 끝에 i 삽입 숫자 :=숫자 + 1 가 L에 있으면 (L의 인덱스) +1을 반환 그렇지 않으면 반환 -1 이해를
nums와 정수 k라는 숫자 목록이 있다고 가정하고 평균을 정확히 k와 같게 만들기 위해 목록에서 정확히 하나의 요소를 제거할 수 있는지 확인해야 합니다. 이제 몇 가지 제약 조건이 있음을 명심해야 합니다. 2 ≤ n ≤ 1,000 여기서 n은 nums 목록의 요소 수입니다. 숫자[i], k ≤ 1,000,000 따라서 입력이 [5,3,2,4,6,10], k =4와 같으면 10을 제거하는 것처럼 출력은 True가 되고 요소의 평균은 (5+3+2+ 4+6)/5 =4, k와 동일합니다. 이 문제를 해결하기 위해 다음 단계를 따
nums라는 숫자 목록이 있다고 가정하고 k와 -k가 모두 num에 존재하는 가장 큰 숫자 k를 찾아야 합니다(같은 숫자일 수 있음). 해당 요소가 없으면 -1을 반환합니다. 따라서 입력이 [-5, 2, 9, -6, 5, -9]와 같으면 출력은 9가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − L1:=숫자로 된 0 및 양수 요소 목록 L2:=0 및 음수 요소의 목록 L1을 역순으로 정렬 목록 L2 정렬 L1의 각 i에 대해 다음을 수행합니다. L2의 각 j에 대해 다음을 수행합니다. i+j가 0과 같으면 반환
직사각형 체스 판을 나타내는 2차원 이진 행렬이 있다고 가정합니다. 여기서 0은 빈 셀이고 1은 기사입니다. 기사는 수평으로 2칸, 수직으로 1칸, 수직으로 2칸, 수평으로 1칸 이동할 수 있습니다(체스판 기사처럼). 두 기사가 서로를 공격하고 있는지 확인해야 합니다. 따라서 입력이 다음과 같으면 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 그러면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − row, col :=행렬의 행 개수, 행렬의 열 개수 0~1행 범위의 r에 대해
숫자 nums와 정수 k의 목록이 있다고 가정하고 nums[0] + nums[1] + ... + nums[i] ≤ k일 때 가능한 최대 i를 찾아야 합니다. 유효한 i가 없으면 -1을 반환합니다. 따라서 입력이 nums =[4, -7, 5, 2, 6], k =5와 같으면 출력은 3이 되고 인덱스는 4+(-7)+5+2를 더하는 것처럼 3이 됩니다. =4, 이것은 k보다 작습니다. 마지막 요소를 추가하면 더 이상 k보다 작지 않으므로 인덱스는 3입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 범위 1에서 숫자 - 1까
nums라는 숫자 목록이 있다고 가정하고 nums의 정렬된 버전에서 두 개의 연속된 숫자 중 가장 큰 차이를 찾아야 합니다. 따라서 입력이 [5, 2, 3, 9, 10, 11]과 같으면 5와 9 사이의 가장 큰 간격이 4이므로 출력은 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=정렬된 목록 번호 ans :=새 목록 0에서 n -2 크기의 범위에 있는 i에 대해 ns 끝에 n[i+1]-n[i] 삽입 최대값 반환 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예시 class Solution
숫자 목록이 있다고 가정합니다. 가장 큰 숫자가 두 번째로 큰 숫자보다 2배 이상 큰지 확인해야 합니다. 예를 들어 목록이 [3, 9, 6]과 같으면 9가 12(2 x 6)보다 크지 않으므로 false를 반환합니다. 목록이 [6, 3, 15]이면 15가 12보다 크므로 true를 반환합니다(2 x 6). 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 숫자의 크기가 2보다 작으면 거짓을 반환 p_max :=nums[0] 및 nums[1]의 최소값 c_max :=nums[0] 및 nums[1]의 최대값 숫자 크기에서 범위