Skip to content

Commit 9ca667d

Browse files
committed
Add unique paths solution
1 parent 91965ef commit 9ca667d

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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 numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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));

0 commit comments

Comments
 (0)