File tree Expand file tree Collapse file tree 5 files changed +133
-0
lines changed
product-of-array-except-self
validate-binary-search-tree Expand file tree Collapse file tree 5 files changed +133
-0
lines changed Original file line number Diff line number Diff line change 1+ var threeSum = function ( nums ) {
2+ let res = [ ] ;
3+ nums . sort ( ( a , b ) => a - b ) ;
4+
5+ for ( let i = 0 ; i < nums . length ; i ++ ) {
6+ if ( i > 0 && nums [ i ] === nums [ i - 1 ] ) {
7+ continue ;
8+ }
9+
10+ let j = i + 1 ;
11+ let k = nums . length - 1 ;
12+
13+ while ( j < k ) {
14+ let total = nums [ i ] + nums [ j ] + nums [ k ] ;
15+
16+ if ( total > 0 ) {
17+ k -- ;
18+ } else if ( total < 0 ) {
19+ j ++ ;
20+ } else {
21+ res . push ( [ nums [ i ] , nums [ j ] , nums [ k ] ] ) ;
22+ j ++ ;
23+
24+ while ( nums [ j ] === nums [ j - 1 ] && j < k ) {
25+ j ++ ;
26+ }
27+ }
28+ }
29+ }
30+ return res ;
31+ } ;
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+ const dp = [ 0 , 1 , 2 ] ;
7+ for ( let i = 3 ; i <= n ; i ++ ) {
8+ const value = dp [ i - 2 ] + dp [ i - 1 ] ;
9+ dp . push ( value ) ;
10+ // console.log(i, value)
11+ }
12+
13+ return dp [ n ] ;
14+ } ;
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+ let answer = [ ] ;
7+
8+ const p = [ ] ;
9+ for ( let i = 0 ; i < nums . length ; i ++ ) {
10+ if ( i == 0 ) {
11+ const n = nums . slice ( i + 1 ) . reduce ( ( acc , curr ) => ( acc *= curr ) , 1 ) ;
12+ console . log ( n ) ;
13+ p . push ( [ 1 , n ] ) ;
14+ answer . push ( 1 * n ) ;
15+ } else {
16+ const [ left , right ] = p [ i - 1 ] ;
17+ if ( nums [ i ] === 0 ) {
18+ const n = nums . slice ( i + 1 ) . reduce ( ( acc , curr ) => ( acc *= curr ) , 1 ) ;
19+ p . push ( [ left * nums [ i - 1 ] , n ] ) ;
20+ answer . push ( left * nums [ i - 1 ] * n ) ;
21+ } else {
22+ p . push ( [ left * nums [ i - 1 ] , right / nums [ i ] ] ) ;
23+ answer . push ( ( left * nums [ i - 1 ] * right ) / nums [ i ] ) ;
24+ }
25+ }
26+ }
27+
28+ return answer ;
29+ } ;
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+ const sCounter = new Map ( ) ;
8+ for ( let e of s ) {
9+ // console.log(e)
10+ const value = sCounter . has ( e ) ? sCounter . get ( e ) + 1 : 1 ;
11+ sCounter . set ( e , value ) ;
12+ }
13+ console . log ( sCounter ) ;
14+
15+ for ( let e of t ) {
16+ if ( ! sCounter . has ( e ) ) {
17+ return false ;
18+ }
19+ const value = sCounter . get ( e ) ;
20+ if ( value - 1 < 0 ) {
21+ return false ;
22+ }
23+ if ( value - 1 == 0 ) {
24+ sCounter . delete ( e ) ;
25+ } else {
26+ sCounter . set ( e , value - 1 ) ;
27+ }
28+ }
29+ const notAllused = [ ...sCounter . keys ( ) ] . length ;
30+ return ! notAllused ;
31+ } ;
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+ const dfs = ( node , left , right ) => {
14+ if ( ! node ) {
15+ return true ;
16+ }
17+
18+ return (
19+ node . val > left &&
20+ node . val < right &&
21+ dfs ( node . left , left , node . val ) &&
22+ dfs ( node . right , node . val , right )
23+ ) ;
24+ } ;
25+
26+ const isValidBST = function ( root ) {
27+ return dfs ( root , - Infinity , Infinity ) ;
28+ } ;
You can’t perform that action at this time.
0 commit comments