LeetCode:62. 不同路径
生活随笔
收集整理的這篇文章主要介紹了
LeetCode:62. 不同路径
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
一個機器人位于一個?m x n?網格的左上角 (起始點在下圖中標記為“Start” )。
機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。
問總共有多少條不同的路徑?
| Start | ? | ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? | ? | Finish |
例如,上圖是一個7 x 3 的網格。有多少可能的路徑?
說明:m?和?n?的值均不超過 100。
示例?1:
輸入: m = 3, n = 2 輸出: 3 解釋: 從左上角開始,總共有 3 條路徑可以到達右下角。 1. 向右 -> 向右 -> 向下 2. 向右 -> 向下 -> 向右 3. 向下 -> 向右 -> 向右示例?2:
輸入: m = 7, n = 3 輸出: 28解題分析:
采用動態規劃的方法,問題的子問題與全局的問題是一樣的,我們采用的是從終點到起點的方法,先看有那些點夸一直接到達終點,終點上面和終點的右面到終點可以直接到,接著再以這兩個點為終點,再看有幾個點以他們為終點,這樣不斷擴大到起點。
解題代碼:
class Solution {public int uniquePaths(int m, int n) {int [][] path = new int[m][n];path[m-1][n-1] = 1;for(int i =m-1;i>=0;i--) {for(int j=n-1;j>=0;j--) {if(i+1<=m-1) {path[i][j] += path[i+1][j];}if(j+1<=n-1) {path[i][j] += path[i][j+1] ;}}} return path[0][0];} }結果
| 62 / 62?個通過測試用例 | 狀態: 通過 |
| 執行用時:1 ms |
總結
以上是生活随笔為你收集整理的LeetCode:62. 不同路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百练OJ:4150:上机
- 下一篇: LeetCode:63. 不同路径 II