File tree Expand file tree Collapse file tree 5 files changed +152
-0
lines changed
product-of-array-except-self
validate-binary-search-tree Expand file tree Collapse file tree 5 files changed +152
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @return {number[][] }
4+ */
5+ var threeSum = function ( nums ) {
6+ // ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
7+ nums . sort ( ( a , b ) => a - b ) ;
8+ const result = [ ] ;
9+
10+ for ( let i = 0 ; i < nums . length - 2 ; i ++ ) {
11+ // ์ค๋ณต๋ ์ซ์๋ ์คํต
12+ if ( i > 0 && nums [ i ] === nums [ i - 1 ] ) continue ;
13+
14+ let left = i + 1 ;
15+ let right = nums . length - 1 ;
16+
17+ while ( left < right ) {
18+ const sum = nums [ i ] + nums [ left ] + nums [ right ] ;
19+
20+ if ( sum < 0 ) {
21+ left ++ ;
22+ } else if ( sum > 0 ) {
23+ right -- ;
24+ } else {
25+ result . push ( [ nums [ i ] , nums [ left ] , nums [ right ] ] ) ;
26+ // ์ค๋ณต๋ left,right ๊ฐ ์คํต
27+ while ( left < right && nums [ left ] === nums [ left + 1 ] ) left ++ ;
28+ while ( left < right && nums [ right ] === nums [ right - 1 ] ) right -- ;
29+
30+ left ++ ;
31+ right -- ;
32+ }
33+ }
34+ }
35+ return result ;
36+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number } n
3+ * @return {number }
4+ */
5+ var climbStairs = function ( n ) {
6+ if ( n <= 2 ) return n ;
7+
8+ let first = 1 ;
9+ let second = 2 ;
10+
11+ for ( let i = 3 ; i <= n ; i ++ ) {
12+ let count = first + second ;
13+ first = second ;
14+ second = count ;
15+ }
16+ return second ;
17+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @return {number[] }
4+ */
5+ var productExceptSelf = function ( nums ) {
6+ // 1.
7+ // ๊ฐ ์ธ๋ฑ์ค์์ ์๊ธฐ ์์ ์ ์ธํ ๋ฐฐ์ด ๋ง๋ ๋ค ๊ณฑ์
์ํ โ ์๊ฐ๋ณต์ก๋ O(nยฒ)
8+ // (์ค์ฒฉ ๋ฃจํ๋ก ์ธํด ์๊ฐ๋ณต์ก๋ O(nยฒ), ํฐ ์
๋ ฅ์์๋ ์๊ฐ ์ด๊ณผ ๋ฐ์)
9+ let result = [ ] ;
10+ for ( let i = 0 ; i < nums . length ; i ++ ) {
11+ const productNums = [ ...nums . slice ( 0 , i ) , ...nums . slice ( i + 1 ) ] ;
12+
13+ let product = 1 ;
14+ for ( let j = 0 ; j < productNums . length ; j ++ ) {
15+ product *= productNums [ j ] ;
16+ }
17+ result . push ( product ) ;
18+ }
19+ return result ;
20+
21+ // 2.
22+ const n = nums . length ;
23+ // ์ ๋ต ๋ฐฐ์ด์ 1๋ก ์ด๊ธฐํ (๊ณฑ์
์ ์ํฅ์ ์ฃผ์ง ์๋๋ก)
24+ const answer = new Array ( n ) . fill ( 1 ) ;
25+
26+ // ์ผ์ชฝ ๋์ ๊ณฑ ๊ณ์ฐ
27+ let left = 1 ;
28+ for ( let i = 0 ; i < n ; i ++ ) {
29+ answer [ i ] = left ;
30+ left *= nums [ i ] ;
31+ }
32+
33+ // ์ค๋ฅธ์ชฝ ๋์ ๊ณฑ ๊ณ์ฐ
34+ let right = 1 ;
35+ for ( let i = n - 1 ; i >= 0 ; i -- ) {
36+ answer [ i ] *= right ;
37+ right *= nums [ i ] ;
38+ }
39+
40+ return answer ;
41+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {string } s
3+ * @param {string } t
4+ * @return {boolean }
5+ */
6+ var isAnagram = function ( s , t ) {
7+ if ( s . length !== t . length ) return false ;
8+
9+ // ๋ฌธ์์ด t๋ฅผ ๋ฐฐ์ด๋ก ๋ณํํด์ ๋ฌธ์ ์ ๊ฑฐํ ์ ์๊ฒ ํจ
10+ let tArr = t . split ( "" ) ;
11+
12+ for ( let i = 0 ; i < s . length ; i ++ ) {
13+ let index = tArr . indexOf ( s [ i ] ) ; // s[i]๊ฐ tArr์ ์๋์ง ํ์ธ
14+ if ( index === - 1 ) {
15+ return false ;
16+ }
17+ tArr . splice ( index , 1 ) ;
18+ }
19+ return true ;
20+ } ;
Original file line number Diff line number Diff line change 1+ /**
2+ * Definition for a binary tree node.
3+ * function TreeNode(val, left, right) {
4+ * this.val = (val===undefined ? 0 : val)
5+ * this.left = (left===undefined ? null : left)
6+ * this.right = (right===undefined ? null : right)
7+ * }
8+ */
9+ /**
10+ * @param {TreeNode } root
11+ * @return {boolean }
12+ */
13+ var isValidBST = function ( root ) {
14+ function helper ( node , lower = - Infinity , upper = Infinity ) {
15+ if ( ! node ) return true ;
16+
17+ const val = node . val ;
18+
19+ // ํ์ฌ ๋
ธ๋๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด false
20+ if ( val <= lower || val >= upper ) {
21+ return false ;
22+ }
23+
24+ // ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ: ์ต์๊ฐ์ ํ์ฌ ๋
ธ๋ ๊ฐ
25+ if ( ! helper ( node . right , val , upper ) ) {
26+ return false ;
27+ }
28+
29+ // ์ผ์ชฝ ์๋ธํธ๋ฆฌ: ์ต๋๊ฐ์ ํ์ฌ ๋
ธ๋ ๊ฐ
30+ if ( ! helper ( node . left , lower , val ) ) {
31+ return false ;
32+ }
33+
34+ return true ;
35+ }
36+
37+ return helper ( root ) ;
38+ } ;
You canโt perform that action at this time.
0 commit comments