leetcode每日一題 最小路徑和

2021-10-08 11:32:18 字數 657 閱讀 2779

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

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

示例:輸入:

[[1,3,1],

[1,5,1],

[4,2,1]

]輸出: 7

解釋: 因為路徑 1→3→1→1→1 的總和最小。

在看到求解給定乙個二維陣列求從左上角到右下角的最小路徑和時,可能會想到用dfs或者bfs。但是dfs遞迴層數過深,可能會導致執行超時,而由於bfs層層遞進的特性,適用於求解最先到達,而不是最少花費。由於本題的求解可以利用上一步的結果,所以想到動態規劃。

解題思路:邊界點的最短步數(第一行,第一列)由預處理得到,而位於非邊界點的最短步數 = 其向左前一步的最短步數 + 其向上前一步的最短步數。

由於第一行只能向右走遍歷,第一列只能向下走遍歷,所以可以對其路徑和先進行預處理;

接著通過狀態轉移方程:cost[i][j] = cost[i][j] + min(cost[i][j - 1], cost[i - 1][j]);求出非邊界點的最短步數。

**如下:

class

solution

};

每日一題 64 最小路徑和

tag 動態規劃 難易程度 中等 題目描述 給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例1 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和最小。本題難點...

每日一題 LeetCode

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...

leetcode每日一題5 23最小覆蓋子串

給你乙個字串 s 乙個字串 t,請在字串 s 裡面找出 包含 t 所有字元的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 如果 s 中不存這樣的子串,則返回空字串 如果 s 中存在這樣的子串,我們保證它是唯一的答案。思路 本題用到了滑動視窗來記錄本次的字串,...