File tree Expand file tree Collapse file tree 5 files changed +85
-0
lines changed
longest-common-subsequence
longest-increasing-subsequence Expand file tree Collapse file tree 5 files changed +85
-0
lines changed Original file line number Diff line number Diff line change
1
+ var canJump = function ( nums ) {
2
+ let pointer = 0 ;
3
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
4
+ if ( i > pointer ) return false ;
5
+ pointer = Math . max ( pointer , i + nums [ i ] ) ;
6
+ if ( pointer >= nums . length - 1 ) return true ;
7
+ }
8
+ return false ;
9
+ } ;
10
+
11
+ // TC: O(n)
12
+ // SC: O(1)
Original file line number Diff line number Diff line change
1
+ var longestCommonSubsequence = function ( text1 , text2 ) {
2
+ // Edge case
3
+ if ( text1 . length === 1 && text2 . length === 1 && text1 === text2 ) return 1 ;
4
+
5
+ let dp = Array . from ( { length : text1 . length + 1 } , ( ) =>
6
+ Array ( text2 . length + 1 ) . fill ( 0 )
7
+ ) ;
8
+
9
+ for ( let i = 1 ; i <= text1 . length ; i ++ ) {
10
+ for ( let j = 1 ; j <= text2 . length ; j ++ ) {
11
+ if ( text1 [ i - 1 ] === text2 [ j - 1 ] ) {
12
+ dp [ i ] [ j ] = dp [ i - 1 ] [ j - 1 ] + 1 ;
13
+ } else {
14
+ dp [ i ] [ j ] = Math . max ( dp [ i - 1 ] [ j ] , dp [ i ] [ j - 1 ] ) ;
15
+ }
16
+ }
17
+ }
18
+
19
+ return dp [ text1 . length ] [ text2 . length ] ;
20
+ } ;
21
+
22
+ // m = text1.length | n = text2.length
23
+ // TC: O(m*n)
24
+ // SC: O(m*n)
Original file line number Diff line number Diff line change
1
+ var lengthOfLIS = function ( nums ) {
2
+ if ( nums . length === 1 ) return 1 ;
3
+ let dp = new Array ( nums . length ) . fill ( 1 ) ;
4
+
5
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
6
+ for ( let j = 0 ; j < i ; j ++ ) {
7
+ if ( nums [ i ] > nums [ j ] ) {
8
+ dp [ i ] = Math . max ( dp [ i ] , dp [ j ] + 1 ) ;
9
+ }
10
+ }
11
+ }
12
+ return Math . max ( ...dp ) ;
13
+ } ;
14
+
15
+ // TC: O(n^2)
16
+ // SC: O(n)
Original file line number Diff line number Diff line change
1
+ var maxSubArray = function ( nums ) {
2
+ // Edge case
3
+ if ( nums . length === 1 ) return nums [ 0 ] ;
4
+
5
+ let maxSum = nums [ 0 ] ;
6
+ let curSum = nums [ 0 ] ;
7
+
8
+ for ( let i = 1 ; i < nums . length ; i ++ ) {
9
+ curSum = Math . max ( nums [ i ] , curSum + nums [ i ] ) ;
10
+ maxSum = Math . max ( maxSum , curSum ) ;
11
+ }
12
+
13
+ return maxSum ;
14
+ } ;
15
+
16
+ // TC: O(n)
17
+ // SC: O(1)
Original file line number Diff line number Diff line change
1
+ var uniquePaths = function ( m , n ) {
2
+ // Edge case
3
+ if ( m === 1 || n === 1 ) return 1 ;
4
+
5
+ let rowArr = new Array ( n ) . fill ( 1 ) ;
6
+
7
+ for ( let row = 1 ; row < m ; row ++ ) {
8
+ for ( let col = 1 ; col < n ; col ++ ) {
9
+ rowArr [ col ] += rowArr [ col - 1 ] ;
10
+ }
11
+ }
12
+ return rowArr [ n - 1 ] ;
13
+ } ;
14
+
15
+ // TC: O(m*n)
16
+ // SC: O(n)
You can’t perform that action at this time.
0 commit comments