LintCode 697. 判断是否为平方数之和

Posted zslhg903

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode 697. 判断是否为平方数之和相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

给一个整数 c, 你需要判断是否存在两个整数 a 和 b 使得 a^2 + b^2 = c.

样例

给出 n = 5
返回 true // 1 * 1 + 2 * 2 = 5
给出 n = -5
返回 false

 

解:一般穷举解会超时

可用n=sqrt(num),sqrt是开根号,n等于根号num,设a*a+b*b=n*n=num,(得a与b都小于等于n) ,即b=sqrt(num-a*a)<=n

class Solution {
public:
    /*
     * @param : the given number
     * @return: whether whether there‘re two integers
     */
    bool checkSumOfSquareNumbers(int num) {
        // write your code here
        if(num<0) return false;
        if(num==0) return true;
       
        int n=sqrt(num);
        for(int a=0;a<=n;a++)
        {
           int b=0;
           if((b=sqrt(num-a*a))<=n) 
           {
               if((b*b+a*a)==num)
                return true;
           }
          
        }
        
        return false;
    }
   
};

 

 

以上是关于LintCode 697. 判断是否为平方数之和的主要内容,如果未能解决你的问题,请参考以下文章

力扣小记

633. 平方数之和

Leetcode633题平方数之和

《LeetCode之每日一题》:29.平方数之和

LintCode Python 简单级题目 488.快乐数

633. 平方数之和