LeetCode 279. Perfect Squares 时间复杂度(O( n^2))

时间复杂度(O( n^2))

class Solution {
public:
    int numSquares(int n) {
        int minCount=n;
        numSearch(n,0,minCount);
        return minCount;
    }
    void numSearch(int n,int count,int &minCount) {
        if(count>=minCount)return ;
        int sqrt_n = (int)sqrt(n);
        if(sqrt_n*sqrt_n==n){
            if(count+1<minCount)
                minCount=count+1;
        }else
            for(int i=sqrt_n;i>0;--i)
                numSearch(n-i*i,count+1,minCount);
    }
};

时间复杂度(O( n*sqrt(n)))

class Solution {
public:
    int numSquares(int n) {
        vector<int> cnt(n+1, INT_MAX);
        cnt[0] = 0;
        for (int i = 1; i <= n; ++i)
            for (int j = 1; j*j <= i; ++j)
                cnt[i] = min (cnt[i], cnt[i-j*j]+1);
        return cnt.back();
    }
};

猜你喜欢

转载自blog.csdn.net/ziyue246/article/details/81813372