Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, …) which sum to n.
Example 1:
Input: n = 12
Output: 3
Explanation: 12 = 4 + 4 + 4.
Example 2:
Input: n = 13
Output: 2
Explanation: 13 = 4 + 9.
动态规划问题,每一个数可以看成一个完美平方数加一个普通数
public class Solution {
public int numSquares(int n) {
int[] dp = new int[n+1];
Arrays.fill(dp, Integer.MAX_VALUE);
for(int i = 0; i * i <= n; i++)
dp[i * i] = 1;
for(int i = 1; i <= n; i++)
for(int j = 1; i + j * j <= n; j++)
dp[i + j * j] = Math.min(dp[i] + 1, dp[i + j * j]);
return dp[n];
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容