File tree Expand file tree Collapse file tree 4 files changed +133
-0
lines changed
search-in-rotated-sorted-array Expand file tree Collapse file tree 4 files changed +133
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * Source: https://leetcode.com/problems/invert-binary-tree/
3+ * νμ΄λ°©λ²: μ¬κ·λ₯Ό μ΄μ©νμ¬ νΈλ¦¬λ₯Ό λ€μ§μ
4+ *
5+ * μκ°λ³΅μ‘λ: O(n) - nμ νΈλ¦¬μ λ
Έλ μ
6+ * 곡κ°λ³΅μ‘λ: O(n) - μ¬κ· νΈμΆμ λ°λ₯Έ μ€ν λ©λͺ¨λ¦¬
7+ *
8+ * λ€λ₯Έ νμ΄λ°©λ²
9+ * - BFSλ₯Ό μ΄μ©νμ¬ νμ΄
10+ * - μ€νμ μ΄μ©νμ¬ νμ΄
11+ */
12+
13+ /**
14+ * Definition for a binary tree node.
15+ * class TreeNode {
16+ * val: number
17+ * left: TreeNode | null
18+ * right: TreeNode | null
19+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
20+ * this.val = (val===undefined ? 0 : val)
21+ * this.left = (left===undefined ? null : left)
22+ * this.right = (right===undefined ? null : right)
23+ * }
24+ * }
25+ */
26+
27+ function invertTree ( root : TreeNode | null ) : TreeNode | null {
28+ if ( ! root ) return null ;
29+
30+ const result = new TreeNode (
31+ root . val ,
32+ invertTree ( root . right ) ,
33+ invertTree ( root . left )
34+ ) ;
35+ return result ;
36+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * Source: https://leetcode.com/problems/jump-game/
3+ * νμ΄λ°©λ²: 그리λλ‘ μ κ·Ό
4+ *
5+ * μκ°λ³΅μ‘λ: O(n) - numsμ μμλ€μ λ€ λ°©λ¬Έν μ μμ
6+ * 곡κ°λ³΅μ‘λ: O(1) - νΉμ μμΉλ§ κΈ°μ΅ν΄λ νμκ° μμ
7+ *
8+ * λ€λ₯Έ νμ΄
9+ * - DFSλ‘ μ²μμ μ κ·ΌνμΌλ μκ° μ€λ²λ‘ μΈν΄ Fail
10+ */
11+
12+ function canJump ( nums : number [ ] ) : boolean {
13+ let goal = nums . length - 1 ;
14+ for ( let i = nums . length - 1 ; i >= 0 ; i -- ) {
15+ const pos = nums [ i ] ;
16+ if ( pos + i >= goal ) {
17+ goal = i ;
18+ }
19+ }
20+ return goal === 0 ;
21+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * Source: https://leetcode.com/problems/merge-k-sorted-lists/
3+ * νμ΄λ°©λ²: λͺ¨λ 리μ€νΈλ€μ νκ³³μ λ£κ³ μ¬λ°°μΉ
4+ *
5+ * μκ°λ³΅μ‘λ: O(NlogN) - λͺ¨λ 리μ€νΈλ₯Ό μν(N), μ λ ¬(NlogN) νλλ° λλ μκ° κ³ λ €
6+ * 곡κ°λ³΅μ‘λ: O(N) - κΈ°μ‘΄ λ°°μ΄μ μ μ₯ν 곡κ°λ§ νμ
7+ */
8+
9+ /**
10+ * Definition for singly-linked list.
11+ * class ListNode {
12+ * val: number
13+ * next: ListNode | null
14+ * constructor(val?: number, next?: ListNode | null) {
15+ * this.val = (val===undefined ? 0 : val)
16+ * this.next = (next===undefined ? null : next)
17+ * }
18+ * }
19+ */
20+
21+ function mergeKLists ( lists : Array < ListNode | null > ) : ListNode | null {
22+ if ( ! lists ?. length ) return null ;
23+ let merged = [ ] ;
24+
25+ for ( let i = 0 ; i < lists . length ; i ++ ) {
26+ let cursor = lists [ i ] ;
27+ while ( cursor != null ) {
28+ merged . push ( cursor . val ) ;
29+ cursor = cursor . next ;
30+ }
31+ }
32+ let sorted = merged . sort ( ( a , b ) => ( a < b ? - 1 : 1 ) ) ;
33+ let head = null ;
34+ let tail = null ;
35+
36+ for ( let i = 0 ; i < sorted . length ; i ++ ) {
37+ const node = new ListNode ( sorted [ i ] , null ) ;
38+ if ( head === null ) {
39+ head = node ;
40+ tail = node ;
41+ } else {
42+ tail . next = node ;
43+ tail = node ;
44+ }
45+ }
46+
47+ return head ;
48+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * Source: https://leetcode.com/problems/search-in-rotated-sorted-array/description/
3+ * νμ΄λ°©λ²: μ΄μ§νμμ ꡬνν΄μ μνλ κ°μ μ°Ύμ
4+ *
5+ * μκ°λ³΅μ‘λ: O(log n) - λ§€ λ°λ³΅λ§λ€ νμ λ²μκ° μ λ°μΌλ‘ μ€μ΄λ¦
6+ * 곡κ°λ³΅μ‘λ: O(1) - μΆκ° 곡κ°μ μ¬μ©νμ§ μκ³ ν¬μΈν° λ³μλ§ μ¬μ©
7+ *
8+ * ν¬μΈνΈ
9+ * - λ¬Έμ μμ μκ° λ³΅μ‘λλ₯Ό O(log n)μ νλΌκ³ μ νμ νκΈ°λλ¬Έμ μ½κ² μ΄μ§νμμΌλ‘ νμ΄μΌ ν¨μ νμ
ν¨
10+ */
11+
12+ function search ( nums : number [ ] , target : number ) : number {
13+ let left = 0 ;
14+ let right = nums . length - 1 ;
15+
16+ while ( left <= right ) {
17+ let mid = Math . floor ( ( left + right ) / 2 ) ;
18+ if ( nums [ mid ] === target ) return mid ;
19+ else if ( nums [ mid ] >= nums [ left ] ) {
20+ if ( nums [ left ] <= target && target <= nums [ mid ] ) right = mid - 1 ;
21+ else left = mid + 1 ;
22+ } else {
23+ if ( nums [ mid ] <= target && target <= nums [ right ] ) left = mid + 1 ;
24+ else right = mid - 1 ;
25+ }
26+ }
27+ return - 1 ;
28+ }
You canβt perform that action at this time.
0 commit comments