2021-09-29:不同路徑。一個機器人位於一個 m x n 網格的左上角 (起

2021-09-29:不同路徑。一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為 “Start” )。機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為 “Finish” )。問總共有多少條不同的路徑?。力扣62。

福大大 答案2021-09-29:

排列組合問題。c(m+n-2,m-1)或者c(m+n-2,n-1)。

時間複雜度:O(min(m,n))。

額外空間複雜度:O(1)。

程式碼用golang編寫。程式碼如下:

package mainimport “fmt”func main() { ret := uniquePaths(2, 2) fmt。Println(ret)}// m 行// n 列// 下:m-1// 右:n-1func uniquePaths(m int, n int) int { right := n - 1 all := m + n - 2 o1 := 1 o2 := 1 // o1乘進去的個數 一定等於 o2乘進去的個數 for i, j := right+1, 1; i <= all; i, j = i+1, j+1 { o1 *= i o2 *= j gcd := gcd2(o1, o2) o1 /= gcd o2 /= gcd } return o1}// 呼叫的時候,請保證初次呼叫時,m和n都不為0func gcd2(m int, n int) int { if n == 0 { return m } else { return gcd2(n, m%n) }}

執行結果如下:

2021-09-29:不同路徑。一個機器人位於一個 m x n 網格的左上角 (起

***

[左神java程式碼](https://github。com/algorithmzuo/coding-for-great-offer/blob/main/src/class29/Problem_0062_UniquePaths。java)