1. 程式人生 > >LintCode 697. 判斷是否為平方數之和

LintCode 697. 判斷是否為平方數之和

超時 判斷 param -a 是否 兩個 ber cksum ret

---恢復內容開始---

給一個整數 c, 你需要判斷是否存在兩個整數 ab 使得 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. 判斷是否為平方數之和