郁梓馨 发表于 2025-9-26 11:51:54

hot100之多维动态规划

我是比较爱用自底向上的自底向上方法不会计算多余情况, 也不用memo存储
不同路径(062)

class Solution {
    public int uniquePaths(int m, int n) {
      int[][] dp = new int;
      for (int i = 0; i < m;i++){
            dp = 1;
      }
      for (int j = 0; j < n; j++){
            dp = 1;
      }

      for (int i = 1; i < m; i++){
            for (int j = 1; j < n; j++){
                dp = dp + dp;
            }
      }

      return dp;
    }
}

[*]分析
对0行0列初始化,后进行合流
最小路径和(064)

class Solution {
    public int minPathSum(int[][] grid) {
      int m = grid.length;
      int n = grid.length;
      int[][] dp = new int;
      dp = grid;

      for (int i = 1; i < m; i++){
            dp = dp + grid;
      }
      for (int j = 1; j < n; j++){
            dp = dp + grid;
      }

      for (int i = 1; i < m; i++){
            for (int j = 1; j < n; j++){
                dp = Math.min(dp, dp) + grid;
            }
      }

      return dp;
    }
}

[*]分析
同样是初始化, 再合流
根据dp数组的依赖关系, 可以进行空间优化
最长回文子串(005)

class Solution {    public String longestPalindrome(String s) {      String res = " ";      for (int i = 0; i < s.length(); i++){            String str1 = longestSubPalindrome(i, i, s);            String str2 = longestSubPalindrome(i, i+1, s);            res = res.length() > str1.length() ? res : str1;            res = res.length() > str2.length() ? res : str2;      }      return res;    }    private String longestSubPalindrome(int lef, int rig, String s){      while (0
页: [1]
查看完整版本: hot100之多维动态规划