classSolution{publicintnumSquares(int n){int dp[]=newint[n +1];for(int i =0; i < dp.length; i++) dp[i]=Integer.MAX_VALUE;
dp[0]=0;for(int i =1; i * i <= n; i++){for(int j = i * i; j <= n; j++){if(dp[j - i * i]==Integer.MAX_VALUE)continue;
dp[j]=Math.min(dp[j], dp[j - i * i]+1);}}return dp[n];}}