leetcode 力扣 279 完全平方数

57 阅读1分钟

动态规划

计算从1开始到n的每个数,他们各自最少可以由几个完全平方数组成。

1.jpeg

class Solution {
    public int numSquares(int n) {
        int[] dp = new int[n + 1];

        dp[0] = 0;

        for (int num = 1; num <= n; num++) {
            int minDiff = Integer.MAX_VALUE;
            for (int i = 1; (num - i * i) >= 0; i++) {
                minDiff = Math.min(minDiff, dp[num - i * i]);
            }

            dp[num] = minDiff + 1;
        }

        return dp[n];
    }
}