n개의 음이 아닌 정수 a1, a2, ..., an, 각 값이 좌표(i, a[i])의 한 점을 나타낸다고 가정합니다. 라인 i의 두 끝점이 (i, a[i]) 및 (i, a[0])에 있도록 n개의 수직선이 존재합니다. x축과 함께 하나의 컨테이너를 형성하는 두 개의 선을 찾아야 하므로 물의 양이 최대인 두 개의 열을 찾는 것이 목표입니다. 따라서 배열이 [1,8,6,2,5,4,8,3,7]과 같으면 음영 처리된 부분은 높이가 7이고 섹션이 7개이므로 전체 면적은 실제로 7 * 7 =49입니다. 이것이 출력입니다. 이 문제를 해결
숫자 배열이 있다고 가정합니다. 그것은 n개의 정수를 저장하고, 배열에는 + b + c =0과 같은 요소 a, b, c가 있습니다. 상황을 만족하는 배열에서 모든 고유한 삼중항을 찾습니다. 따라서 배열이 [-1,0,1,2,-1,-4]와 같으면 결과는 [[-1, 1, 0], [-1, -1, 2]] 이 문제를 해결하기 위해 다음 단계를 따릅니다. 배열 번호를 정렬하고 배열 res를 정의합니다. 0에서 숫자 길이 – 3까지 범위에 있는 i의 경우 0이고 nums[i] =nums[i - 1]이면 다음 부분을 건너뛰고 계속 l :=i
2-9까지의 숫자를 포함하는 문자열이 있다고 가정합니다. 숫자가 나타낼 수 있는 모든 가능한 문자 조합을 반환해야 합니다. 전화 버튼과 마찬가지로 숫자를 문자로 매핑하는 방법이 아래에 나와 있습니다. 1은 어떤 문자에도 매핑되지 않습니다. 1 2 b c 3 디에프 4 나는 5 j k 엘 6 아니오 7 피 q r s 8 유 v 9 wxyz * 0 # 예를 들어 주어진 문자열이 23이면 가능한 문자열은 [ad, ae, af, bd, be, bf, cd, ce , cf] 이 문
연결된 목록이 있다고 가정합니다. 목록의 끝에서 N번째 노드를 제거한 다음 헤드를 반환해야 합니다. 따라서 목록이 [1, 2, 3, 4, 5, 6]이고 n =3인 경우 반환되는 목록은 [1, 2, 3, 5, 6]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − head 다음에 노드가 없으면 None을 반환합니다. 앞:=머리, 뒤:=머리, 카운터:=0 및 분수:=거짓 동안 카운터 <=n front가 없으면 플래그를 true로 설정하고 루프에서 나옵니다. front :=전면의 다음, 카운터를 1 증가 프론트가 있는
값 n이 있다고 가정합니다. n개의 여는 괄호와 닫는 괄호가 있는 모든 가능한 잘 구성된 괄호를 생성해야 합니다. 따라서 n =3의 값이면 괄호 세트는 [()()(),()(()),(())(),(()()) ,((()))] 이 문제를 해결하기 위해 다음 단계를 따릅니다. genParenthesisRec()라는 메서드를 정의합니다. 이것은 왼쪽, 오른쪽, 임시 문자열 및 결과 배열을 사용합니다. 초기 결과 배열이 비어 있습니다. genParenthesisRec 함수는 아래와 같이 작동합니다. left =0이고 right :=0이면 결
오름차순으로 정렬된 배열이 있고 사전에 알려지지 않은 일부 피벗에서 회전한다고 가정해 보겠습니다. 예를 들어, [0,1,2,4,5,6,7]은 [4,5,6,7,0,1,2]가 될 수 있습니다. 검색에 대상 값을 지정했습니다. 배열에서 얻을 수 있으면 인덱스를 반환하고, 그렇지 않으면 -1을 반환합니다. 배열에 중복 항목이 없다고 가정할 수 있습니다. 따라서 배열이 [4,5,6,7,0,1,2]와 같으면 출력은 4가 됩니다. 이 요소의 인덱스가 인덱스 4에 있기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. low :=0
정수 A의 배열이 있다고 가정합니다. 이것은 오름차순으로 정렬되어 있으므로 주어진 대상 값의 시작 위치와 끝 위치를 찾아야 합니다. 배열에서 대상을 찾을 수 없으면 [-1, -1]을 반환합니다. 따라서 배열이 [2,2,2,3,4,4,4,4,5,5,6]이고 대상이 4인 경우 출력은 [4,7] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 초기 res :=[-1,-1], low :=0, high :=배열 A의 길이로 설정 낮은 동안 <높음 중간 :=낮음 + (높음 – 낮음)/2 A[mid]가 대상이면 높음 :=중간, res[0
9x9 스도쿠 보드가 하나 있다고 가정합니다. 그것이 유효한지 지금 확인해야 합니다. 채워진 셀만 다음 규칙에 따라 검증해야 합니다 - 각 행은 반복 없이 1-9 사이의 숫자를 포함해야 합니다. 각 열은 반복 없이 1-9의 숫자를 포함해야 합니다. 그리드의 각 9(3x3) 하위 상자에는 1-9 사이의 숫자가 반복 없이 포함되어야 합니다. 스도쿠 그리드가 다음과 같다고 가정합니다 - 5 3 7 6 1 9 5 9 8 6 8
문자열로 두 개의 숫자가 있다고 가정합니다. 우리는 그것들을 곱하고 결과를 문자열로 반환해야 합니다. 따라서 숫자가 26과 12이면 결과는 312가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. x와 y의 두 인수를 취하면 x가 y를 나눕니다. x <-무한대이고 y =1이면 무한대를 반환합니다. a :=|x|, b :=|y| 및 ans :=0 =0 p :=0 =0 p :=p + 1 a :=a – (왼쪽 시프트 b, p번) ans :=ans + 왼쪽 시프트 1p 번 0도 참이면 ans를 반환하고, 그렇지 않으면
고유한 정수 모음이 있다고 가정합니다. 가능한 모든 순열을 찾아야 합니다. 따라서 배열이 [2,1,3]과 같으면 결과는 [[1,2,3], [1,3,2], [2,1,3], [2,3,1 ], [3,1,2], [3,2,1]] 이 문제를 해결하기 위해 다음 단계를 따릅니다. 재귀적 접근 방식을 사용하여 list, start, curr 및 res를 만들 것입니다. length of list – 1이면 res에 curr을 추가하고 반환합니다. 지정된 목록의 길이 시작부터 범위 내 i의 경우 – 1 인덱스 시작 및 (시작 + (i – 시작
하나의 이미지를 나타내는 하나의 2D 행렬이 있다고 가정합니다. 이 이미지를 시계 방향으로 90도 회전해야 합니다. 이미지가 다음과 같으면 1 5 7 9 6 3 2 1 3 그러면 출력은 2 9 1 1 6 5 3 3 7 이 문제를 해결하기 위해 다음 단계를 따릅니다. temp_mat =[], col :=행렬의 길이 – 1을 고려하십시오. 0부터 행렬의 길이까지의 범위에 있는 col의 경우 온도 :=[] 행렬 길이 범위의 행 - 1에서 -1까지 temp에 행렬[row, col] 추가 temp_mat에 온도 추
문자열 집합이 있다고 가정합니다. 우리는 아나그램을 함께 그룹화해야 합니다. 따라서 [eat, tea, tan, ate, nat, bat]이면 그룹은 [[ate,eat,tea],[ nat,탄],[박쥐]] 이 문제를 해결하기 위해 다음 단계를 따릅니다. 해상도를 지도로 정의 문자열 배열의 i에 대해 x :=x 및 결합, i의 정렬된 문자열 결과에 x인 경우 결과[x]에 i 삽입 다른 결과[x] :=[i] res의 값을 목록으로 반환 예제(파이썬) 더 나은 이해를 위해 다음 구현을 살펴보겠습니다. − class Soluti
두 개의 입력 x와 n이 있다고 가정합니다. x는 -100.0에서 100.0 사이의 숫자이고 n은 32비트 부호 있는 정수입니다. 라이브러리 함수를 사용하지 않고 x의 n승을 구해야 합니다. 따라서 주어진 입력이 x =12.1, n =-2이면 출력은 0.00683이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. 전력 :=|n| 및 해상도 :=1.0 전력이 0이 아닌 동안 마지막 전력 비트가 1이면 res :=res * x x :=x * x n <0인 경우 1 / res를 반환 반환 결과 예제(파이썬) 더 나
n개의 객체가 있는 배열이 있다고 가정합니다. 이들은 빨강, 흰색 또는 파랑으로 채색되어 있으며 같은 색상의 개체가 인접하도록 제자리에 정렬합니다. 그래서 빨간색, 흰색, 파란색의 순서로 색상을 지정합니다. 여기서는 0, 1, 2와 같은 숫자를 사용하여 빨강, 흰색, 파랑을 각각 나타냅니다. 따라서 배열이 [2,0,2,1,1,0]과 같으면 출력은 [0,0,1,1,2,2]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. 낮음:=0, 중간:=0 및 높음:=배열 길이 – 1로 설정 중간 <=높음 arr[mid] =0이면 a
두 개의 정수 n과 k가 있다고 가정합니다. 1 ... n 중에서 k개의 가능한 모든 조합을 찾아야 합니다. 따라서 n =4이고 k =2이면 조합은 [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]가 됩니다. ]] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 이를 해결하기 위해 재귀 함수를 사용할 것입니다. solve() 함수는 n, k, 임시 배열 및 시작을 취합니다. 시작은 처음에 1입니다. 이것은 다음과 같이 작동합니다. temp 배열의 크기 =k이면 res 배열에 temp를 삽입하고 반환 i:=n부
A에서 Z까지의 문자가 포함된 메시지가 A → 1, B → 2 ... Z → 매핑을 사용하여 숫자로 인코딩되고 있다고 가정합니다. 26. 따라서 숫자만 포함하는 비어 있지 않은 문자열이 하나 있다면 디코딩할 수 있는 방법의 수를 찾아야 합니다. 따라서 문자열이 12와 같으면 AB 또는 L로 만들 수 있으므로 두 가지 가능한 방법이 있습니다. 따라서 답은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 동적 프로그래밍을 사용하여 이 문제를 해결할 것입니다. n :=s의 길이 dp :=n개의 0이 있는 배열 s[0
바이너리 트리가 있다고 가정합니다. 재귀를 사용하지 않고 중위 순회 체계를 사용하여 이 트리를 순회해야 합니다. 트리가 다음과 같다면 그러면 순회는 [2,5,7,10,15,20]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 두 개의 배열 res 및 스택 생성, curr :=root 설정 한 번의 무한 루프 실행 현재가 null이 아닌 동안 curr을 스택에 넣고 curr :=curr의 왼쪽으로 설정 스택의 길이가 0이면 res를 반환합니다. node :=스택에서 꺼낸 요소 노드 값을 res에 삽입 cu
비어 있지 않은 문자열 s와 사전 wordDict가 있다고 가정합니다. 비어 있지 않은 단어 목록을 포함하는 경우 s가 공백으로 구분된 하나 이상의 사전 단어 시퀀스로 분할될 수 있는 시점을 결정합니다. 우리는 몇 가지 규칙을 따라야 합니다 - 사전의 동일한 단어는 분할에서 여러 번 재사용될 수 있습니다. 사전에 중복되는 단어가 없다고 가정할 수 있습니다. 문자열 s =applepenapple이고 단어 사전이 [apple, pen]과 같다고 가정하면 문자열 s가 apple pen apple로 분할될 수 있기 때문에 출력은 tr
음수가 아닌 정수 목록이 있다고 가정하면 가장 큰 수를 구성하도록 정렬해야 합니다. 따라서 배열이 [10, 2]이면 가장 큰 수는 210이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 최상위 숫자가 처음에 두는 것보다 큰 숫자를 배열하는 것과 같이 숫자를 배열합니다. 그런 다음 배열의 숫자를 결합하기만 하면 됩니다. 예시 더 나은 이해를 위해 다음 구현을 살펴보겠습니다. − from functools import cmp_to_key class Solution(object): def lar
음수가 아닌 정수 num이 있다고 가정합니다. 0 ≤ i ≤ num 범위의 각 숫자 i에 대해 이진 대응 항목에서 1의 수를 계산하고 목록으로 반환해야 합니다. 따라서 숫자가 5이면 숫자는 [0, 1, 2, 3, 4, 5]이고 이 숫자에서 1의 개수는 [0, 1, 1, 2, 1, 2]입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − res :=num + 1개의 0을 포함하는 배열 오프셋:=0 1에서 num + 1까지의 i에 대해 i와 i – 1 =0이면 res[i] :=1이고 offset :=0입니다. 그렇지 않으면