File tree 2 files changed +75
-0
lines changed
java1/algorithms/dynamicProgramming
javascript/algorithms/dynamicProgramming
2 files changed +75
-0
lines changed Original file line number Diff line number Diff line change
1
+ package java1 .algorithms .dynamicProgramming ;
2
+ import java .util .*;
3
+
4
+ public class UniquePaths {
5
+ //Dynamic programming:- TC:O(m*n) OC:O(m*n)
6
+ private static int uniquePaths1 (int m , int n ) {
7
+ int [][] dp = new int [m ][n ];
8
+
9
+ for (int i =0 ; i <m ; i ++) {
10
+ for (int j =0 ; j <n ; j ++) {
11
+ if (i == 0 || j == 0 ) {
12
+ dp [i ][j ] = 1 ;
13
+ } else {
14
+ dp [i ][j ] = dp [i -1 ][j ] + dp [i ][j -1 ];
15
+ }
16
+ }
17
+ }
18
+ return dp [m -1 ][n -1 ];
19
+ }
20
+ //Dynamic programming:- TC:O(m*n) OC:O(n)
21
+ private static int uniquePaths2 (int m , int n ) {
22
+ int [] row = new int [n ];
23
+ Arrays .fill (row , 1 );
24
+
25
+ for (int i =1 ; i <m ; i ++){
26
+ int [] newRow = new int [n ];
27
+ newRow [0 ] = 1 ;
28
+ for (int j =1 ; j <n ; j ++) {
29
+ newRow [j ] = row [j ] + newRow [j -1 ];
30
+ }
31
+ row = newRow ;
32
+ }
33
+ return row [n -1 ];
34
+ }
35
+
36
+ public static void main (String [] args ) {
37
+ int m = 4 , n = 5 ;
38
+ System .out .println (uniquePaths1 (m , n ));
39
+ System .out .println (uniquePaths2 (m , n ));
40
+ }
41
+ }
Original file line number Diff line number Diff line change
1
+ //Dynamic programming:- TC:O(m*n) OC:O(m*n)
2
+ function uniquePaths1 ( m , n ) {
3
+ let dp = new Array ( m ) . fill ( 0 ) . map ( x => new Array ( n ) . fill ( 0 ) ) ;
4
+
5
+ for ( let i = 0 ; i < m ; i ++ ) {
6
+ for ( let j = 0 ; j < n ; j ++ ) {
7
+ if ( i === 0 || j === 0 ) {
8
+ dp [ i ] [ j ] = 1 ;
9
+ } else {
10
+ dp [ i ] [ j ] = dp [ i - 1 ] [ j ] + dp [ i ] [ j - 1 ] ;
11
+ }
12
+ }
13
+ }
14
+ return dp [ m - 1 ] [ n - 1 ] ;
15
+ }
16
+
17
+ //Dynamic programming:- TC:O(m*n) OC:O(n)
18
+ function uniquePaths2 ( m , n ) {
19
+ let row = new Array ( n ) . fill ( 1 ) ;
20
+
21
+ for ( let i = 1 ; i < m ; i ++ ) {
22
+ let newRow = new Array ( n ) . fill ( 0 ) ;
23
+ newRow [ 0 ] = 1 ;
24
+ for ( let j = 1 ; j < n ; j ++ ) {
25
+ newRow [ j ] = row [ j ] + newRow [ j - 1 ] ;
26
+ }
27
+ row = newRow ;
28
+ }
29
+ return row [ n - 1 ] ;
30
+ }
31
+
32
+ let m = 4 , n = 5 ;
33
+ console . log ( uniquePaths1 ( m , n ) ) ;
34
+ console . log ( uniquePaths2 ( m , n ) ) ;
You can’t perform that action at this time.
0 commit comments