1class Solution {2public int numSquares(int n) {3int dp[] = new int[n + 1];4dp[0] = 0;5dp[1] = 1;67for (int i = 2; i < dp.length; i++) {8int min = Integer.MAX_VALUE;9for (int j = 1; j * j <= i; j++) {10min = Math.min(min, dp[i - j * j]);11}12dp[i] = min + 1;13}14return dp[n];15}16}