Leetcode 最小路徑和

2021-09-26 09:00:17 字數 985 閱讀 2205

【題目描述】

乙個包含非負整數的 m*n 的網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。

說明:每次只能向下或者向右移動一步。

樣例輸入:

[[1,3,1],

[1,5,1],

[4,2,1]

]輸出: 7

解釋: 因為路徑 1→3→1→1→1 的總和最小。(官方題解)

【解題思路】

1:因為每個網格都有向下或向右2種選擇(除了特殊邊界), 每次均類似判斷選最短的,聯想到暴力遞迴, 但超時了。

2:動態規劃, 大體思想類似於迪傑斯特拉演算法求圖中v0點到各點最短路徑

​ 從第乙個網格開始將各網格的值重新賦為左上角到該網格最短路徑和, 而後面每個網格 (少數邊界特殊考慮即可)

都可由其上網格或左網格選最小路徑和加上原自身路徑得到。

【vector用法補充】

1:定義二維vector陣列   vector> a;

2:插入元素, 若想定義a = [[0,1,2],[3,4,5]],則:

vector> a; 裡必須是vector

vectorb;

b.push_back(0);

b.push_back(1);

b.push_back(2);

a.push_back(b);

b.clear(); //記住要清除b

b.push_back(3);

b.push_back(4);

b.push_back(5);

a.push_back(b);

3:vector>a中的vector元素的個數

row = a.size(); //行數m

col = a[0].size //列數n

4:訪問元素,同二維陣列類似

cout << a[i][j] << " ";

【樣例**】

Leetcode 最小路徑和

64.最小路徑和 先算第一行從前乙個節點到下乙個節點之和 for int i 1 i grid 0 length i 再算第一列從前乙個節點到下乙個節點之和 for int j 1 j grid.length j 接下來從 1,1 算從上乙個節點到當前節點之和 for int i 1 i grid....

leetcode 最小路徑和

1.動態規劃 對於 i,j 其入口只有 i 1,j 和 i,j 1 兩個,故到達 i,j 的最小路徑為min dp i 1 j dp i j 1 i,j 故狀態轉移方程為 dp i j min dp i 1 j dp i j 1 i,j 但需要注意初始化 對於上邊界,其路徑只能來自於左邊 對於左邊界...

LeetCode 64 最小路徑和

題目描述 提示幫助 提交記錄 社群討論 閱讀解答 隨機一題 給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和...