记忆线:当时一刷完是1-205. 二刷88道。下次更新记得标记不能bug-free的原因。)
 
88-------------Perfect Squares(完美平方数。给一个整数,求出用平方数来相加得到最小的个数)
public class Solution{
    public static void main(String[] args){
        System.out.println(numSquares(8));
    }
    
    public static int numSquares(int n){
        
        //dp[n]=dp[i + j*j] = min(dp[i]+1,dp[i + j*j]);
        int dp[] = new int[n+1];
          for (int i = 1; i * i <= n; i++) {
              dp[i * i] = 1;
            }
        for(int i = 1; i <= n; i++){
            for(int j = 1; i + j*j <= n; j++){
                if(dp[i + j * j] == 0){
                    dp[i + j * j] = dp[i] + 1;
                }
                dp[i + j * j] = Math.min(dp[i + j * j], dp[i] + 1);
                
            }
        }
        
        
        return dp[n];
        
    }
}
View Code

 

相关文章:

  • 2022-01-23
  • 2022-12-23
  • 2021-09-20
  • 2021-07-02
  • 2021-12-10
  • 2021-04-01
  • 2021-12-30
  • 2022-12-23
猜你喜欢
  • 2021-11-04
  • 2021-09-16
  • 2022-01-19
  • 2022-12-23
  • 2021-10-02
  • 2022-12-23
  • 2021-07-12
相关资源
相似解决方案