1public int numSquares(int n) {
2 int[] dp = new int[n + 1];
3 Arrays.fill(dp, Integer.MAX_VALUE);
4 dp[0] = 0;
5
6 for (int i = 1; i <= n; i++) {
7 for (int j = 1; j * j <= i; j++) {
8 dp[i] = Math.min(dp[i], dp[i - j * j] + 1);
9 }
10 }
11
12 return dp[n];
13}