本文共 2148 字,大约阅读时间需要 7 分钟。
C++,
time: O(m*n)
space: O(m*n)
1 class Solution { 2 public: 3 /** 4 * @param grid: a list of lists of integers. 5 * @return: An integer, minimizes the sum of all numbers along its path 6 */ 7 int minPathSum(vector> &grid) { 8 // write your code here 9 int m = grid.size(), n = grid[0].size();10 vector > dp(m, vector (n));11 for (int i = 0; i < m; i++) {12 for (int j = 0; j < n; j++) {13 if (i == 0) {14 if (j == 0) {15 dp[i][j] = grid[i][j];16 } else {17 dp[i][j] = dp[i][j-1] + grid[i][j];18 }19 } else if (j == 0) {20 dp[i][j] = dp[i-1][j] + grid[i][j];21 } else {22 dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];23 }24 }25 }26 return dp[m-1][n-1];27 }28 };
C++,
time: O(m*n)
space: O(m)
1 class Solution { 2 public: 3 /** 4 * @param grid: a list of lists of integers. 5 * @return: An integer, minimizes the sum of all numbers along its path 6 */ 7 int minPathSum(vector> &grid) { 8 // write your code here 9 int m = grid.size(), n = grid[0].size();10 vector dp(n);11 for (int i = 0; i < m; i++) {12 for (int j = 0; j < n; j++) {13 if (i == 0) {14 if (j == 0) {15 dp[j] = grid[i][j];16 } else {17 dp[j] = dp[j-1] + grid[i][j];18 }19 } else if (j == 0) {20 dp[j] = dp[j] + grid[i][j];21 } else {22 dp[j] = min(dp[j], dp[j - 1]) + grid[i][j];23 }24 }25 }26 return dp[n-1];27 }28 };
本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/5000605.html,如需转载请自行联系原作者