File tree Expand file tree Collapse file tree 4 files changed +113
-0
lines changed
binary-tree-maximum-path-sum Expand file tree Collapse file tree 4 files changed +113
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * class TreeNode {
4
+ * val: number
5
+ * left: TreeNode | null
6
+ * right: TreeNode | null
7
+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8
+ * this.val = (val===undefined ? 0 : val)
9
+ * this.left = (left===undefined ? null : left)
10
+ * this.right = (right===undefined ? null : right)
11
+ * }
12
+ * }
13
+ */
14
+
15
+ /*
16
+ Time complexity: O(N)
17
+ Space complexity: O(N) h: 트리의 높이
18
+ */
19
+ function maxPathSum ( root : TreeNode | null ) : number {
20
+ let maxSum = - Infinity
21
+ const dfs = ( node : TreeNode ) : number => {
22
+ if ( node == null ) return 0
23
+
24
+ const leftMax = Math . max ( 0 , dfs ( node . left ) )
25
+ const rightMax = Math . max ( 0 , dfs ( node . right ) )
26
+ const currentMax = node . val + leftMax + rightMax
27
+
28
+ maxSum = Math . max ( maxSum , currentMax )
29
+ return node . val + Math . max ( leftMax , rightMax )
30
+ }
31
+ dfs ( root )
32
+ return maxSum
33
+ } ;
Original file line number Diff line number Diff line change
1
+ /*
2
+ Time complexity: O(NlogN)
3
+ Space complexity: O(N)
4
+ */
5
+ function merge ( intervals : number [ ] [ ] ) : number [ ] [ ] {
6
+ if ( intervals . length === 0 ) return intervals
7
+ intervals . sort ( ( a , b ) => a [ 0 ] - b [ 0 ] )
8
+ const result = [ ]
9
+ for ( const interval of intervals ) {
10
+ if ( result . length === 0 || result [ result . length - 1 ] [ 1 ] < interval [ 0 ] ) {
11
+ result . push ( interval )
12
+ } else {
13
+ result [ result . length - 1 ] [ 1 ] = Math . max ( result [ result . length - 1 ] [ 1 ] , interval [ 1 ] )
14
+ }
15
+ }
16
+ return result
17
+ } ;
Original file line number Diff line number Diff line change
1
+ /*
2
+ Time complexity: O(N)
3
+ Space complexity: O(N)
4
+ */
5
+ function missingNumber ( nums : number [ ] ) : number {
6
+ const numSet = new Set < number > ( nums )
7
+ let missNum = 0
8
+ for ( let i = 0 ; i <= nums . length ; i ++ ) {
9
+ if ( ! numSet . has ( i ) ) {
10
+ missNum = i
11
+ break
12
+ }
13
+ }
14
+ return missNum
15
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for singly-linked list.
3
+ * class ListNode {
4
+ * val: number
5
+ * next: ListNode | null
6
+ * constructor(val?: number, next?: ListNode | null) {
7
+ * this.val = (val===undefined ? 0 : val)
8
+ * this.next = (next===undefined ? null : next)
9
+ * }
10
+ * }
11
+ */
12
+
13
+ /**
14
+ Do not return anything, modify head in-place instead.
15
+ */
16
+ /*
17
+ Time complexity: O(N)
18
+ Space complexity: O(1)
19
+ */
20
+ function reorderList ( head : ListNode | null ) : void {
21
+ let slow = head
22
+ let fast = head
23
+ while ( fast && fast . next ) {
24
+ slow = slow . next
25
+ fast = fast . next . next
26
+ }
27
+ let curr = slow . next
28
+ slow . next = null
29
+ let prev = null
30
+
31
+ while ( curr ) {
32
+ let temp = curr . next
33
+ curr . next = prev
34
+ prev = curr
35
+ curr = temp
36
+ }
37
+ let first = head
38
+ let second = prev
39
+
40
+ while ( second ) {
41
+ let firstNext = first . next
42
+ let secondNext = second . next
43
+ first . next = second
44
+ second . next = firstNext
45
+ first = firstNext
46
+ second = secondNext
47
+ }
48
+ } ;
You can’t perform that action at this time.
0 commit comments