题目链接
题目描述
实现代码
动态规划思想:
class Solution {
public int numSquares(int n) {
if(n == 1) {
return 1;
}
int[] dp = new int[n+1];
dp[1] = 1;
int result = Integer.MAX_VALUE;
for(int i=2; i<=n; i++) {
int min = Integer.MAX_VALUE;
for(int j=1; j*j <= i; j++) {
min = Math.min(min, dp[i-j*j] + 1);
}
dp[i] = min;
if(i == n) {
result = Math.min(result, min);
}
}
return result;
}
}