image.png

解决思路

动态规划

image.png

  1. public int numSquares(int n) {
  2. int[] dp = new int[n + 1]; // 默认初始化值都为0
  3. for (int i = 1; i <= n; i++) {
  4. dp[i] = i; // 最坏的情况就是每次+1
  5. for (int j = 1; i - j * j >= 0; j++) {
  6. dp[i] = Math.min(dp[i], dp[i - j * j] + 1); // 动态转移方程
  7. }
  8. }
  9. return dp[n];
  10. }