일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 그레이들
- CS
- network
- db
- TypeScript
- java
- 자바
- DP
- BFS
- 다이나믹 프로그래밍
- git
- Redux
- 리트코드
- Javascript
- LeetCode
- react
- 백준
- DFS
- frontend
- Data Structure
- 프로그래머스
- 알고리즘
- Database
- Python
- VIM
- Algorithm
- Graph
- 안드로이드
- vscode
- 동적 계획법
Archives
- Today
- Total
늘 겸손하게
LeetCode 654 - Maximum Binary Tree ( JavaScript ) 본문
안녕하세요besforyou입니다
이번 글은 LeetCode 654 - Maximum Binary Tree 문제 풀이입니다
문제 풀이
재귀 함수를 이용하여 Tree 자료구조를 생성하였습니다.
배열 안의 가장 큰 원소 값을 val 값으로 가지고, left 자식 node는 가장 큰 원소값 왼쪽의 subArray속의 가장 큰 원소값을 val로 가지고, right 자식 node는 가장 큰 원소값 오른쪽의 subArray속의 가장 큰 원소값을 val로 가지는 트리를 생성해야 합니다.
자바스크립트 함수는 내부의 함수를 가질 수 있으므로 매개변수 nums에 접근 가능한 내부 함수를 생성하여 재귀적으로 문제를 해결할 수 있습니다.
코. 드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
var constructMaximumBinaryTree = function(nums) {
return next(0, nums.length -1);
function next(l, r) {
if (l > r) return null;
let nextIndex = -1, max = -Infinity;
for (let i = l ; i <= r ; i++ ) {
if (max < nums[i]) {
nextIndex = i;
max = nums[i];
}
}
return {
val : max,
left : next(l, nextIndex - 1),
right : next(nextIndex + 1 , r)
}
}
};
|
cs |
결과
'코딩 문제 > LeetCode' 카테고리의 다른 글
LeetCode 136 - Single Number ( JavaScript ) (0) | 2021.12.03 |
---|---|
LeetCode 451 - Sort Characters By Frequency ( JavaScript ) (0) | 2021.11.27 |
LeetCode 1525 - Number of Good Ways to Split a String ( Java ) (0) | 2021.11.20 |
LeetCode 1704 - Determine if String Halves Are Alike ( Java ) (0) | 2021.11.19 |
LeetCode 442 - Find All Duplicates in an Array ( JavaScript ) (0) | 2021.11.17 |