码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] Sum of Square Numbers

时间:2017-11-09 15:05:14      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:col   lock   false   desc   eth   c中   action   tput   base   

 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

标签:col   lock   false   desc   eth   c中   action   tput   base   

原文地址:http://www.cnblogs.com/immjc/p/7808186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!