leetcode633. 平方数之和(mid)


力扣链接

题目描述

给定一个非负整数 c ,你要判断是否存在两个整数 ab,使得 a^2 + b^2 = 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

解题思路

官方题解链接

  • 双指针

代码(双指针)

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

复杂度

  • 时间复杂度:
    在这里插入图片描述

  • 空间复杂度: O(1)

Guess you like

Origin blog.csdn.net/qq_43478625/article/details/121735572