n개의 노드가 있고 0에서 n - 1까지 레이블이 지정되어 있고 무향 모서리 목록도 제공된다고 가정하면 무향 그래프에서 연결된 구성 요소의 수를 찾기 위해 하나의 함수를 정의해야 합니다. 따라서 입력이 n =5이고 edge =[[0, 1], [1, 2], [3, 4]],인 경우 그러면 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − dfs() 함수를 정의하면 노드, 그래프, 방문이라는 배열이 필요합니다. 방문[노드]가 거짓이면 - 방문[노드] :=참 초기화 i :=0의 경우
nums라는 배열과 대상 값 k가 있다고 가정하고 k가 되는 하위 배열의 최대 길이를 찾아야 합니다. 존재하지 않으면 대신 0을 반환합니다. 따라서 입력이 nums =[1, -1, 5, -2, 3], k =3과 같으면 하위 배열 [1, - 1, 5, -2]의 합이 다음과 같이 출력은 4가 됩니다. 3이고 가장 깁니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ret :=0 하나의 맵 정의 n :=숫자 크기 온도 :=0, m[0] :=-1 initialize i :=0의 경우, i
이진 트리가 있다고 가정합니다. 가장 큰 부분은 가장 큰 수의 노드가 있는 하위 트리를 의미하는 가장 큰 하위 트리를 찾아야 합니다. 따라서 입력이 다음과 같으면 이 경우 가장 큰 BST 하위 트리가 강조 표시된 것이므로 출력은 3이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 데이터라고 하는 하나의 구조를 정의합니다. 크기, maxVal, minVal 및 ok의 네 가지 값이 있습니다. ok는 참/거짓 값만 보유할 수 있습니다. 해결(트리노드 * 노드) 노드가 null이면 &miuns;
Android 3x3 키 잠금 화면과 두 개의 정수 m과 n이 있고 m과 n의 값이 1 ≤ m ≤ n ≤ 9 범위에 있다고 가정합니다. Android 잠금 화면의 잠금 해제 패턴의 총 수를 계산해야 합니다. 최소 m개의 키로 구성되며 최대 n개의 키로 구성됩니다. 규칙은 각 패턴이 최소 m개의 키와 최대 n개의 키를 연결해야 한다는 것과 같습니다. 모든 키는 고유해야 합니다. 패턴에서 두 개의 연속 키를 연결하는 선이 다른 키를 통과하는 경우 다른 키가 패턴에서 이전에 선택되어 있어야 합니다. 허용되지 않는 선택되지 않은 키를 통
연구원의 인용 배열이 있다고 가정합니다. 연구원의 h-index를 계산하는 함수를 정의해야 합니다. 우리가 알고 있는 바와 같이 h-index는 연구원의 논문의 영향력을 계산하는 데 사용되는 지표입니다. 공식적으로 H-인덱스는 다음과 같이 정의할 수 있습니다. N개의 논문 중 h개가 각각 최소 h회 인용되고 다른 N - h개의 논문이 각각 h회 이하인 경우 연구자는 인덱스 h를 가집니다. 따라서 입력이 인용 =[5, 4, 1, 2, 6]과 같으면 출력은 3이 됩니다. 3개 이상의 논문이 각각 4, 5, 6번 이상 3번 이상 인용되
이진 탐색 트리 BST와 노드의 다른 값이 있다고 가정하면 BST에서 해당 노드의 순서대로 후속 작업을 찾아야 합니다. 우리 모두는 노드 p의 후임자가 p 값보다 큰 가장 작은 키를 가진 노드라는 것을 알고 있습니다. 따라서 입력이 다음과 같으면 그리고 p =1이면 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 재귀적 메서드 inorderSuccessor()를 정의합니다. 이 메서드는 루트를 사용하고 p 루트가 null인 경우: null 반환 루트의 val <=p의 val이면: inorder
요소가 감소하지 않는 순서로 배열된 단일 연결 목록이 있다고 가정하고 높이 균형 이진 검색 트리로 변환해야 합니다. 따라서 목록이 [-10, -3, 0, 5, 9]와 같은 경우 가능한 트리는 다음과 같습니다. - 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 목록이 비어 있으면 null 반환 sortedListToBST()라는 재귀 메서드를 정의하면 목록 시작 노드가 사용됩니다. x :=목록 a에서 중간 노드의 이전 노드 주소 mid :=정확한 중간 노드 중간 값에서 값을 사용하여 새 노드 만들기 nextStart
2D 평면에 n개의 점이 있다고 가정하면 y축에 평행한 선이 주어진 점을 대칭적으로 반영하는지 확인해야 합니다. 즉, 주어진 선 위에 모든 점을 반사한 후 원래 점의 집합은 반영된 점과 동일합니다. 따라서 입력이 점 =[[1,1],[-1,1]]와 같은 경우 그러면 출력이 true가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 한 세트를 정의하십시오. n :=포인트 크기 minVal :=inf maxVal :=-inf initialize i :=0의 경우, i
정수 숫자와 정수 값 a, b 및 c의 정렬된 배열이 있다고 가정합니다. f(x) =ax^2 + bx + c 형식의 2차 함수를 배열의 각 요소 x에 적용해야 합니다. 그리고 최종 배열은 정렬된 순서여야 합니다. 따라서 입력이 nums =[-4,-2,2,4], a =1, b =3, c =5인 경우 출력은 [3,9,15,33] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − x, a, b, c −를 취하는 함수 f()를 정의합니다. 반환 ax^2 + bx + c 주요 방법에서 다음을 수행하십시오 - n :
2D 그리드가 있다고 가정하고 여기에서 각 셀은 벽 W, 적 E 또는 비어 있는 0입니다. 우리는 하나의 폭탄을 사용하여 죽일 수 있는 최대 적을 찾아야 합니다. 폭탄은 벽에 부딪힐 때까지 심은 지점에서 같은 행과 열에 있는 모든 적을 죽입니다. 그리고 우리는 공백에만 폭탄을 놓을 수 있습니다. 따라서 입력이 다음과 같으면 그러면 출력은 3이 되며 녹색 위치에 폭탄을 배치하면 3명의 적을 죽입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 렛 :=0 n :=그리드의 행 개수, m :=그리드의 열 개수
지난 5분 동안 수신된 히트 수를 계산하는 히트 카운터를 설계한다고 가정합니다. 두 번째 단위에서 타임스탬프 매개변수를 받아들이는 함수가 있고 시간 순서대로 시스템에 호출이 이루어지고 있다고 가정할 수 있습니다(따라서 타임스탬프가 단조롭게 증가함). 또한 가장 빠른 타임스탬프가 1에서 시작한다고 가정합니다. 여러 히트가 거의 동시에 도착할 수 있습니다. 따라서 hit() 함수를 호출하여 적중하고 getHits() 함수를 호출하여 적중 횟수를 얻습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 크기가 300인 배
이진 트리가 있다고 가정합니다. 모든 잎사귀를 모아 제거하고 나무가 비워질 때까지 반복합니다. 따라서 입력이 다음과 같으면 그러면 출력은 [[4,5,3],[2],[1]]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 하나의 맵 정의 sz 하나의 2D 배열 ret 정의 dfs() 함수를 정의하면 노드가 필요합니다. 노드가 null이면 - sz[노드의 값] :=1 + dfs(노드의 왼쪽) 및 dfs(노드의 오른쪽)의 최대값 ret의 크기가
비어 있지 않은 단일 연결 숫자 목록으로 표시된 음이 아닌 정수가 있다고 가정하고 이제 정수에 1을 더해야 합니다. 정수가 숫자 0 자체를 제외하고는 선행 0을 포함하지 않는다고 가정할 수 있습니다. 연결 목록에서 가장 중요한 숫자는 목록의 맨 앞에 있습니다. 따라서 입력이 [1,2,3]과 같으면 출력은 [1,2,4]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 머리가 null이면 - 머리 반환 커 =머리 요청 =NULL curr이 0이 아닌 동안 수행 - curr의 val이
크기가 n이고 0으로 초기화된 배열이 있고 값 k도 있다고 가정하면 k 업데이트 작업을 수행합니다. 각 작업은 하위 배열 A[startIndex ... endIndex](startIndex 및 endIndex 포함)의 각 요소를 inc로 증가시키는 트리플렛([startIndex, endIndex, inc])으로 표시됩니다. 모든 k 연산이 실행된 후에 수정된 배열을 찾아야 합니다. 따라서 입력이 길이 =5, 업데이트 =[[1,3,2],[2,4,3],[0,2,-2]]인 경우 출력은 [- 2,0 ,3,5,3] 이 문제를 해결하기 위
다음 작업을 지원하는 전화 디렉토리를 설계한다고 가정합니다. get - 이것은 누구에게도 할당되지 않은 번호를 제공합니다. check - 번호를 사용할 수 있는지 여부를 확인합니다. release - 번호를 재활용하거나 해제합니다. 이니셜라이저를 사용하여 처음에 n개의 숫자를 초기화할 수 있습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 한 세트 정의 사용 가능한 하나의 대기열 정의 이니셜라이저는 maxNumbers를 사용합니다. N :=maxNumbers initia
원래 시퀀스 org가 seqs의 시퀀스에서 고유하게 재구성될 수 있는지 확인해야 한다고 가정합니다. 원래 시퀀스는 1에서 n까지의 정수와 1 ≤ n ≤ 10^4 범위에 있는 n의 순열입니다. 여기서 재구성은 seqs에서 시퀀스의 가장 짧은 공통 수퍼 시퀀스를 만드는 것을 의미합니다. seq에서 재구성할 수 있는 시퀀스가 하나만 있는지 확인해야 하며 원래 시퀀스인지 확인해야 합니다. 따라서 입력이 org =[1,2,3], seqs =[[1,2],[1,3]]과 같으면 출력은 거짓이 됩니다. [1,3,2]도 재구성할 수 있는 유효한
문자 D와 I로 구성된 비밀 서명이 있다고 가정합니다. D는 두 숫자 사이의 감소 관계를 나타내고 I는 두 숫자 사이의 증가 관계를 나타냅니다. 그리고 비밀 서명은 1에서 n까지의 다른 모든 숫자를 고유하게 포함하는 특수 정수 배열로 구성되었습니다. 예를 들어, 비밀 서명 DI는 [2,1,3] 또는 [3,1,2]와 같은 배열에서 구성될 수 있지만 [3,2,4] 또는 [2, 1,3,4], 둘 다 DI 비밀 서명을 나타낼 수 없는 특수 문자열을 구성하는 불법입니다. 이제 입력에서 주어진 비밀 서명을 참조할 수 있는 [1, 2, ..
이진 배열이 있다고 가정합니다. 최대 하나의 0을 뒤집을 수 있다면 이 배열에서 연속 1의 최대 수를 찾아야 합니다. 따라서 입력이 [1,0,1,1,0]과 같으면 출력은 4가 됩니다. 왜냐하면 우리가 첫 번째 0을 뒤집으면 연속 1의 최대 수가 되기 때문입니다. 뒤집은 후 연속 1의 최대 수는 4입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ret :=1, n :=숫자 크기 n이 0이 아닌 경우 - 0 반환 j :=0, 0 :=0 initialize i :=0의 경우, i
빈 공간과 벽이 있는 미로에 공이 있다고 가정합니다. 이제 공은 위, 아래, 왼쪽 또는 오른쪽과 같은 방향으로 굴러 빈 경로를 통과할 수 있지만 벽에 부딪힐 때까지 구르는 것을 멈추지 않습니다. 공이 멈추면 다음 방향을 선택할 수 있습니다. 공의 위치, 목적지, 미로를 시작해야 하고 공이 목적지에 멈출 수 있는지 확인해야 합니다. 미로는 하나의 2D 배열로 표현됩니다. 여기서 1은 벽을 나타내고 0은 빈 공간을 나타냅니다. 미로의 경계는 모두 벽입니다. 시작 및 대상 좌표는 행 및 열 인덱스로 표시됩니다. 따라서 입력이 2D 배
빈 공간과 벽이 있는 미로에 공이 있다고 가정합니다. 이제 공은 위, 아래, 왼쪽 또는 오른쪽과 같은 방향으로 굴러 빈 경로를 통과할 수 있지만 벽에 부딪힐 때까지 구르는 것을 멈추지 않습니다. 공이 멈추면 다음 방향을 선택할 수 있습니다. 우리는 공의 시작 위치, 목적지, 미로를 찾아야 하고, 공이 목적지에 멈추는 최단 거리를 찾아야 합니다. 여기서 거리는 실제로 공으로 덮인 빈 셀의 수로 정의됩니다(시작 위치를 포함한 시작 위치 제외). 목적지에서 공을 멈출 수 없으면 -1을 반환합니다. 미로는 하나의 2D 배열로 표현됩니다