Try   HackMD

Leetcode 279. Perfect Squares

tags: Leetcode(JAVA)

題目 : https://leetcode.com/problems/perfect-squares/

想法 :

​​​​DP ! DP ! DP !
​​​​dp[n]=min(dp[n], dp[n-pow(i,2)]+1);

時間複雜度 : O(n^(2/3))。

程式碼 : (JAVA)

class Solution {
    public int numSquares(int n) {
        int[] dp=new int[n+1];
        
        for(int i=0 ; i<=n ; i++){
            dp[i]=Integer.MAX_VALUE;
        }
        
        dp[0]=0;
        for(int i=1 ; i<=n ; i++){
            for(int j=1 ; j*j <= i ; j++){
                dp[i]=Math.min(dp[i], dp[i-j*j]+1);
            }
        }
        
        return dp[n];
    }
}