File tree Expand file tree Collapse file tree 4 files changed +117
-0
lines changed
construct-binary-tree-from-preorder-and-inorder-traversal Expand file tree Collapse file tree 4 files changed +117
-0
lines changed Original file line number Diff line number Diff line change 1+ // TC: O(N^2)
2+ // SC: O(N^2)
3+
4+ /**
5+ * Definition for a binary tree node.
6+ * function TreeNode(val, left, right) {
7+ * this.val = (val===undefined ? 0 : val)
8+ * this.left = (left===undefined ? null : left)
9+ * this.right = (right===undefined ? null : right)
10+ * }
11+ */
12+ /**
13+ * @param {number[] } preorder
14+ * @param {number[] } inorder
15+ * @return {TreeNode }
16+ */
17+ var buildTree = function ( preorder , inorder ) {
18+ if ( inorder . length === 0 ) {
19+ return null ;
20+ }
21+
22+ const rootValue = preorder [ 0 ] ;
23+ const leftNodeLength = inorder . findIndex ( ( value ) => value === rootValue ) ;
24+ const leftNode = buildTree (
25+ preorder . slice ( 1 , 1 + leftNodeLength ) ,
26+ inorder . slice ( 0 , leftNodeLength )
27+ ) ;
28+ const rightNode = buildTree (
29+ preorder . slice ( 1 + leftNodeLength ) ,
30+ inorder . slice ( leftNodeLength + 1 )
31+ ) ;
32+ return new TreeNode ( rootValue , leftNode , rightNode ) ;
33+ } ;
Original file line number Diff line number Diff line change 1+ // TC: O(N)
2+ // SC: O(N)
3+
4+ /**
5+ * @param {number } n
6+ * @return {number[] }
7+ */
8+ var countBits = function ( n ) {
9+ const result = [ 0 ] ;
10+ let pointer = 0 ;
11+ let lastPointer = 0 ;
12+
13+ for ( let num = 1 ; num <= n ; num ++ ) {
14+ result . push ( result [ pointer ] + 1 ) ;
15+
16+ if ( pointer === lastPointer ) {
17+ lastPointer = result . length - 1 ;
18+ pointer = 0 ;
19+ } else {
20+ pointer += 1 ;
21+ }
22+ }
23+
24+ return result ;
25+ } ;
Original file line number Diff line number Diff line change 1+ // TC: O(N)
2+ // SC: O(N)
3+
4+ /**
5+ * @param {string } s
6+ * @return {number }
7+ */
8+ var numDecodings = function ( s ) {
9+ if ( s [ 0 ] === "0" ) {
10+ return 0 ;
11+ }
12+ if ( s . length === 1 ) {
13+ return 1 ;
14+ }
15+
16+ const dpTable = new Array ( s . length ) . fill ( 0 ) ;
17+ if ( s [ 0 ] !== "0" ) {
18+ dpTable [ 0 ] = 1 ;
19+ }
20+ if ( s [ 1 ] !== "0" ) {
21+ dpTable [ 1 ] += 1 ;
22+ }
23+ if ( isValid ( `${ s [ 0 ] } ${ s [ 1 ] } ` ) ) {
24+ dpTable [ 1 ] += 1 ;
25+ }
26+
27+ for ( let index = 2 ; index < s . length ; index ++ ) {
28+ if ( s [ index ] !== "0" ) {
29+ dpTable [ index ] += dpTable [ index - 1 ] ;
30+ }
31+ if ( s [ index - 1 ] !== "0" && isValid ( `${ s [ index - 1 ] } ${ s [ index ] } ` ) ) {
32+ dpTable [ index ] += dpTable [ index - 2 ] ;
33+ }
34+ }
35+
36+ return dpTable [ dpTable . length - 1 ] ;
37+
38+ function isValid ( stringNumber ) {
39+ const number = Number ( stringNumber ) ;
40+ if ( number <= 0 ) {
41+ return false ;
42+ }
43+ if ( 27 <= number ) {
44+ return false ;
45+ }
46+ return true ;
47+ }
48+ } ;
Original file line number Diff line number Diff line change 1+ // TC: O(N * log N)
2+ // SC: O(N)
3+
4+ /**
5+ * @param {string } s
6+ * @param {string } t
7+ * @return {boolean }
8+ */
9+ var isAnagram = function ( s , t ) {
10+ return s . split ( '' ) . sort ( ) . join ( '' ) === t . split ( '' ) . sort ( ) . join ( '' ) ;
11+ } ;
You can’t perform that action at this time.
0 commit comments