File tree Expand file tree Collapse file tree 3 files changed +85
-0
lines changed
lowest-common-ancestor-of-a-binary-search-tree
non-overlapping-intervals Expand file tree Collapse file tree 3 files changed +85
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @description
3+ * ์ต๋ํ ๋ง์ ์์ ๋์ด๋ผ๋ ๋ฌธ๊ตฌ์์ dynamic programming์ ์ฐ์
4+ * ์ฐ์๋ ์ง์ ํธ ์ ์๋ค๋ผ๋ ๋ฌธ๊ตฌ์์ ์ ํ์์ ๋์ถ ํ ์ ์์์
5+ *
6+ * n = length of nums
7+ * time complexity: O(n)
8+ * space complexity: O(n)
9+ */
10+ var rob = function ( nums ) {
11+ if ( nums . length === 1 ) return nums [ 0 ] ;
12+
13+ const dp = Array ( nums . length ) . fill ( 0 ) ;
14+
15+ dp [ 0 ] = nums [ 0 ] ;
16+ dp [ 1 ] = Math . max ( nums [ 1 ] , dp [ 0 ] ) ;
17+
18+ for ( let i = 2 ; i < nums . length ; i ++ )
19+ dp [ i ] = Math . max ( dp [ i - 2 ] + nums [ i ] , dp [ i - 1 ] ) ;
20+
21+ return dp [ nums . length - 1 ] ;
22+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @description
3+ * bfs, dfs์ ๊ฐ์ ์ํ ๋ฐฉ๋ฒ๊ณผ treeNode ๊ตฌ์กฐ์ child๊ฐ ์๋ parent๋ผ๋ ์์ฑ์ ๋ถ์ฌํด ๋ถ๋ชจ์ฐพ๊ธฐ๋ฅผ ์์ด๋์ด๋ก ์ ๊ทผ
4+ * ํ์ง๋ง ๋ชจ๋ ๋
ธ๋๋ฅผ ์ํํด์ผํ๊ณ p์ q๊ฐ ์ํ์ง์ ๊ณผ ๋์ด ํฌํจํ๋ ๊ด๊ณ์ธ์ง๋ฅผ ์ค์ ์ผ๋ก ๋ฌธ์ ์ ์ ๊ทผํจ
5+ * ๊ทธ ๊ฒฐ๊ณผ postOrder๋ฅผ ์๊ฐํ๊ฒ ๋์ด ๋ฌธ์ ํ์ด
6+ *
7+ * n = length of total treeNode
8+ * time complexity: O(n)
9+ * space complexity: O(n)
10+ */
11+ var lowestCommonAncestor = function ( root , p , q ) {
12+ let answer = null ;
13+
14+ const postOrder = ( tree ) => {
15+ if ( tree === null ) return [ false , false ] ;
16+
17+ const [ hasLeftP , hasLeftQ ] = postOrder ( tree . left ) ;
18+ const [ hasRightP , hasRightQ ] = postOrder ( tree . right ) ;
19+
20+ const hasP = hasLeftP || hasRightP || tree . val === p . val ;
21+ const hasQ = hasLeftQ || hasRightQ || tree . val === q . val ;
22+
23+ if ( hasP && hasQ && answer === null ) answer = tree ;
24+
25+ return [ hasP , hasQ ] ;
26+ } ;
27+
28+ postOrder ( root ) ;
29+
30+ return answer ;
31+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @description
3+ * overlapping์ด ์๋๊ธฐ์ํ ๊ธฐ์ค์ด ํ์ํจ์ ๋๋
4+ * ์ฒ์์๋ ์์์ , ๋์ ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ง๋ง 16๋ฒ ํ
์คํธ์์ ์คํจ
5+ * ์ ๋ ฌ๊ธฐ์ค์ด ๋์ , ์์์ ์์ผ๋ก ์ ๋ ฌํด์ผํ๋ค๊ณ ๊นจ๋ซ๊ฒ ๋จ
6+ *
7+ * n = length of intervals
8+ * time complexity: O(n log n)
9+ * space complexity: O(n)
10+ */
11+ var eraseOverlapIntervals = function ( intervals ) {
12+ intervals . sort ( ( a , b ) => {
13+ if ( a [ 1 ] !== b [ 1 ] ) return a [ 1 ] - b [ 1 ] ;
14+ if ( a [ 0 ] !== b [ 0 ] ) return b [ 0 ] - a [ 0 ] ;
15+ return 0 ;
16+ } ) ;
17+
18+ let answer = 0 ;
19+ const current = intervals [ 0 ] ;
20+
21+ for ( let i = 1 ; i < intervals . length ; i ++ ) {
22+ const [ start , end ] = intervals [ i ] ;
23+
24+ if ( current [ 1 ] > start ) answer ++ ;
25+ else {
26+ current [ 0 ] = start ;
27+ current [ 1 ] = end ;
28+ }
29+ }
30+
31+ return answer ;
32+ } ;
You canโt perform that action at this time.
0 commit comments