leetcode *劍指 Offer 47. 禮物的最大價值
【題目】*劍指 Offer 47. 禮物的最大價值
在一個 m*n 的棋盤的每一格都放有一個禮物,每個禮物都有一定的價值(價值大於 0)。你可以從棋盤的左上角開始拿格子裡的禮物,並每次向右或者向下移動一格、直到到達棋盤的右下角。給定一個棋盤及其上面的禮物的價值,請計算你最多能拿到多少價值的禮物?
示例 1:
輸入:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
輸出: 12
解釋: 路徑 1→3→5→2→1 可以拿到最多價值的禮物
提示:
0 < grid.length <= 200
0 < grid[0].length <= 200
【解題思路1】動態規劃
dp陣列的含義: dp[i][j]表示動(0, 0)到(i, j)的最大累計和
邊界條件: 陣列的最左邊只能從上面的格子過來,陣列的最上邊只能從左邊的格子過來
遞推式: dp[i][j] += Math.max(dp[i - 1][j], dp[i][j - 1]);
因為在原陣列上直接累加更方便,所以不新建dp陣列了
class Solution {
public int maxValue(int[][] grid) {
int m = grid.length, n = grid[0].length;
for(int i = 1; i < m; i++) {
grid[i][0] += grid[i - 1][0];
}
for(int j = 1; j < n; j++) {
grid[0][j] += grid[0][j - 1];
}
for(int i = 1; i < m; i++) {
for(int j = 1; j < n; j++) {
grid[i][j] += Math.max(grid[i - 1][j], grid[i][j - 1]);
}
}
return grid[m - 1][n - 1];
}
}
相關文章
- 劍指Offer 47. 禮物的最大價值(Medium)
- 力扣 - 劍指 Offer 47. 禮物的最大價值力扣
- JZ-072-禮物的最大價值
- Leetcode劍指offer(八)LeetCode
- 劍指offer(59)——滑動視窗的最大值
- 劍指 Offer 59 - II. 佇列的最大值佇列
- 【leetcode】劍指 Offer 16. 數值的整數次方LeetCode
- [劍指offer題解][Java]佇列的最大值/滑動視窗的最大值Java佇列
- 劍指Offer 表示數值的字串字串
- LeetCode|劍指 Offer 49.醜數LeetCode
- 力扣 - 劍指 Offer 59 - I. 滑動視窗的最大值力扣
- 【leetcode】劍指 Offer II 105. 島嶼的最大面積-【深度優先DFS】LeetCode
- LeetCode 劍指 Offer 05. 替換空格LeetCode
- 《劍指offer》JAVA題解,LeetCode評測JavaLeetCode
- LeetCode-劍指Offer刷題記錄LeetCode
- 劍指Offer系列之「表示數值的字串」字串
- 53. 最大子序和(劍指 Offer 42)
- Leetcode 劍指 Offer 40. 最小的k個數LeetCode
- 劍指OFFER
- 劍指 Offer 63. 股票的最大利潤-Python題解Python
- 劍指Offer-連續子陣列中的最大和陣列
- 劍指 Offer 42.連續子陣列的最大和陣列
- 禮物的最大價值(一維動態規劃&二維動態規劃)動態規劃
- 劍指offer-例題 連續子陣列的最大和陣列
- 【劍指 Offer 】17. 列印從1到最大的n位數
- 《劍指Offer》- 連續子陣列的最大和或最小和陣列
- 劍指offer | 17. 列印從1到最大的n位數
- LeetCode 劍指 Offer 65. 不用加減乘除做加法LeetCode
- 刷題記錄:劍指offer+遇到的筆試題+LeetCode筆試LeetCode
- Leetcode 劍指 Offer 03. 陣列中重複的數字LeetCode陣列
- 劍指 Offer 列印從1到最大n位數c++C++
- 劍指offer導航
- 劍指 offer21
- 劍指offer16
- 劍指 offer20
- 【劍指offer】【2】字串的空格字串
- leetcode 劍指 Offer 48. 最長不含重複字元的子字串LeetCode字元字串
- leetcode 102 劍指Offer 32 二叉樹的層次遍歷LeetCode二叉樹