diff --git a/UniquePaths/step1.md b/UniquePaths/step1.md new file mode 100644 index 0000000..c158857 --- /dev/null +++ b/UniquePaths/step1.md @@ -0,0 +1,27 @@ +```go +// Use DP +// When x == 0 or y == 0 the number of path will be 1 +// Other than that, the number of path will be dp[y][x - 1] + dp[y - 1][x] +// Time complexity: O(M * n) +// Space complexity: O(M * N) +// Time spend: 03:14 +package main +func uniquePaths(m int, n int) int { + dp := make([][]int, m) + for i := range dp { + dp[i] = make([]int, n) + } + + for y := range dp { + for x := range dp[y] { + if x == 0 || y == 0 { + dp[y][x] = 1 + continue + } + dp[y][x] = dp[y - 1][x] + dp[y][x - 1] + } + } + + return dp[m - 1][n - 1] +} +``` \ No newline at end of file diff --git a/UniquePaths/step2.md b/UniquePaths/step2.md new file mode 100644 index 0000000..b070a00 --- /dev/null +++ b/UniquePaths/step2.md @@ -0,0 +1,22 @@ +```go +// Time spend: 01:07 +package main +func uniquePaths(m int, n int) int { + dp := make([][]int, m) + for i := range dp { + dp[i] = make([]int, n) + } + + for y := range dp { + for x := range dp[y] { + if x == 0 || y == 0 { + dp[y][x] = 1 + continue + } + dp[y][x] = dp[y - 1][x] + dp[y][x - 1] + } + } + + return dp[m - 1][n - 1] +} +``` \ No newline at end of file diff --git a/UniquePaths/step3.md b/UniquePaths/step3.md new file mode 100644 index 0000000..d09ffea --- /dev/null +++ b/UniquePaths/step3.md @@ -0,0 +1,68 @@ +```go +// Time spend: 01:12 +package main +func uniquePaths(m int, n int) int { + dp := make([][]int, m) + for i := range dp { + dp[i] = make([]int, n) + } + + for y := range dp { + for x := range dp[y] { + if x == 0 || y == 0 { + dp[y][x] = 1 + continue + } + dp[y][x] = dp[y - 1][x] + dp[y][x - 1] + } + } + + return dp[m - 1][n - 1] +} +``` + +```go +// Time spend: 01:06 +package main +func uniquePaths(m int, n int) int { + dp := make([][]int, m) + for i := range dp { + dp[i] = make([]int, n) + } + + for y := range dp { + for x := range dp[y] { + if x == 0 || y == 0 { + dp[y][x] = 1 + continue + } + dp[y][x] = dp[y - 1][x] + dp[y][x - 1] + } + } + + return dp[m - 1][n - 1] +} +``` + +```go +// Time spend: 01:08 +package main +func uniquePaths(m int, n int) int { + dp := make([][]int, m) + for i := range dp { + dp[i] = make([]int, n) + } + + for y := range dp { + for x := range dp[y] { + if x == 0 || y == 0 { + dp[y][x] = 1 + continue + } + dp[y][x] = dp[y - 1][x] + dp[y][x - 1] + } + } + + return dp[m - 1][n - 1] +} +``` \ No newline at end of file