leetcode 633. 平方数之和

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。

 

示例 1:

输入:c = 5
输出:true
解释:1 * 1 + 2 * 2 = 5
示例 2:

输入:c = 3
输出:false
示例 3:

输入:c = 4
输出:true
示例 4:

输入:c = 2
输出:true
示例 5:

输入:c = 1
输出:true
 

提示:

0 <= c <= 231 - 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-of-square-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

采用双指针,从两头向内缩小,知道找到符合的数字。

    public boolean judgeSquareSum(int c) {
        int st = 0;
        int end = (int) Math.pow(c, 0.5) + 1;

        long s = st * st;
        long e = end * end;
        while (st <= end) {
            int s1 = (int) (c - s - e);
            if (s1 == 0) {
                return true;
            } else if (s1 > 0) {
                s = s + (st << 1 )+ 1;
                st++;
            } else {
                e = e - (end << 1) + 1;
                end--;
            }
        }
        return false;
    }

 

posted @ 2021-04-28 09:21  旺仔古李  阅读(27)  评论(0编辑  收藏  举报