leetcode Perfect Squares
阿新 • • 發佈:2018-12-25
一個數可以寫幾個數的平方數,最少的平方的個數
解題思路:動態規劃 dp[i]=min(dp[i-j*j]+1) j=1,2,..m m=sqrt(i)
public static void main(String[] args) { int num=12; int i = numSquares(num); System.out.println(i); } public static int numSquares(int n) { int m=(int)Math.sqrt(n); int[] arr=new int[n+1]; arr[0]=0; arr[1]=1; for(int i=1;i<=n;i++){ int min=Integer.MAX_VALUE; for(int j=1;j<=m;j++){ if(j*j<=i){ min=Math.min(min,arr[i-j*j]+1); } } arr[i]=min; } return arr[n]; }