leetcode-Perfect Squares-279

Posted 0_summer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-Perfect Squares-279相关的知识,希望对你有一定的参考价值。

输入整数n,求完全平方数的和等于n中完全平方数用得最少的个数

直观想法搜索,先处理n以内的完全平方数,然后搜索,但效率不行,整数范围内的完全平方数有40000多个,用搜索的方法相当于求集合的子集个数,时间是2^n,肯定超时

正解:dp

dp[i]表示完全平方数和等于i的最优解

dp[i]=min(dp[i-j*j]+1)

时间N*sqrt(N)

 1 class Solution {
 2 public:
 3     int numSquares(int n) {
 4         if(n==0) return 0;
 5         int dp[n+1];
 6         memset(dp,0,sizeof(dp));
 7         dp[1]=1;
 8         for(int i=2;i<=n;i++){
 9             int mi=INT_MAX;
10             int ok=0;
11             for(int j=1;j*j<=i;j++){
12                 if(j*j==i){
13                     dp[i]=1;
14                     ok=1;
15                     break;
16                 }
17                 mi=min(mi,dp[i-j*j]+1);
18             }
19             if(!ok) dp[i]=mi;
20         }
21         return dp[n];
22     }
23 };

 

以上是关于leetcode-Perfect Squares-279的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-Perfect Rectangle

Codeforces 898E Squares and not squares

LeetcodePerfect Squares

279. Perfect Squares

Perfect Squares

1.2.4 Palindromic Squares