一、题目内容

image.png

二、题解

解法1:

思路

dp[i][j] = dp[i][j] + Min(matrix[j],matrix[j])
dfs,要求空间复杂度为O(n),则说明不能再新建dp矩阵,直接使用matrix

代码

  1. public class Solution {
  2. /**
  3. *
  4. * @param matrix int整型二维数组 the matrix
  5. * @return int整型
  6. */
  7. public int minPathSum (int[][] matrix) {
  8. // write code here
  9. //dp[i][j] = dp[i][j] + Min(matrix[j],matrix[j])
  10. int m = matrix.length;
  11. int n = matrix[0].length;
  12. for(int i = 0; i<m; i++){
  13. for(int j = 0; j<n; j++){
  14. if(i == 0 && j == 0){
  15. continue;
  16. }
  17. if(i == 0){
  18. matrix[i][j] += matrix[i][j-1];
  19. }else if(j == 0){
  20. matrix[i][j] += matrix[i-1][j];
  21. }else {
  22. matrix[i][j] += Math.min(matrix[i-1][j],matrix[i][j-1]);
  23. }
  24. }
  25. }
  26. return matrix[m-1][n-1];
  27. }
  28. }