天天看點

633. 平方數之和(簡單題)

題目描述:

給定一個非負整數 c ,你要判斷是否存在兩個整數 a 和 b,使得 a2 + b2 = c。

示例1:

輸入: 5

輸出: True

解釋: 1 * 1 + 2 * 2 = 5

示例2:

輸入: 3

輸出: False

來源:力扣(LeetCode)

連結:https://leetcode-cn.com/problems/sum-of-square-numbers

解法:

class Solution {
    public boolean judgeSquareSum(int c) {
        int lo = 0;
        int hi = (int)Math.sqrt(c);
        while(lo<=hi){
            int key =lo*lo+hi*hi;
            if(lo>hi)   return false;
            else if(key<c) lo++;
            else if(key>c)  hi--;
            else return true;
        }
        return false;
    }
}
           

思路概述:

使用二分查找,左邊界是0,右邊界根号c,使key值來接收平方和。key比c大了,則使右邊界減一,key比c小了,則使右邊界加一。如果最後直到左邊界大于右邊界了還沒有找到與c相等的key值,則代表c不是平方數之和。