[LeetCode] Sum of Square Numbers

Posted immjc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] Sum of Square Numbers相关的知识,希望对你有一定的参考价值。

 Given a non-negative integer c, your task is to decide whether there‘re two integers a and b such that a2 + b2 = c.

Example 1:

Input: 5
Output: True
Explanation: 1 * 1 + 2 * 2 = 5

Example 2:

Input: 3
Output: False

给定一个数c,判断这个数是否由两个数的平方和组成。

首先对c开方,得到的数i这个i是c中最大的平方根,如果c由两个平方数组成,则这两个数的平方根都必然小于等于i,所以从i~0逐个判断c - i*i是否为平方数,如果是平方数,则返回true。

需要注意判断c是否为0这个初始条件。

class Solution {
public:
    bool judgeSquareSum(int c) {
        if (c == 0)
            return true;
        int i = sqrt(c);
        while (i) {
            int x = c - i * i;
            int t = sqrt(x);
            if (t * t == x)
                return true;
            i--;
        }
        return false;
    }
};
// 6 ms

 


以上是关于[LeetCode] Sum of Square Numbers的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode] Sum of Square Numbers

[leetcode-633-Sum of Square Numbers]

LeetCode 633. Sum of Square Numbers

[leetcode]633. Sum of Square Numbers

[LeetCode] Sum of Square Numbers 平方数之和

[LeetCode] 1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold 元素和小于等于阈值的