Perfect Squares | LeetCode

来源:互联网 发布:淘宝培训机构单烽讲师 编辑:程序博客网 时间:2024/06/03 12:32

Perfect Squares

感觉这完全就是考数学定理,如果你记得四元平方和定理还有三元平方和定理,那么这道题就是一个简单的验证的题目,代码如下,解释了如何使用这两个定理解决这道题。

int numSquares(int n) {        //四元平方定理,就是任意一个数都可以拆成四个平方之和,所以这题的答案只有1,2,3,4        //三元平方和定理,就是只要一个数是这个形式就不能拆分为3个数的平方和        //4^k(8*m+7)        //一个数的平方和        int s = sqrt(n);        if(s*s==n)            return 1;        //2        for(int i=1;i<=s;++i){            for(int j=1;j<=n-i*i;++j){                if(n==j*j+i*i)                    return 2;            }        }        //4^k(8m+7)        while(n%4==0){            n = n/4;        }        if(n%8==7)            return 4;        return 3;    }

可能还有其他方法可以不使用数学定理,希望能够留言提供,一起交流学习。

0 0
原创粉丝点击