Formatted question description: https://leetcode.ca/all/633.html
633. Sum of Square Numbers
Level
Easy
Description
Given a non-negative integer c
, your task is to decide whether there’re two integers a
and b
such that a2 + b2 = c.
Example 1:
Input: 5
Output: True
*Explanation: 1 * 1 + 2 * 2 = 5
Example 2:
Input: 3
Output: False
Solution
Maintain two numbers low
and high
, which are 0 and the greatest integer less than or equal to the square root of c
. While low < high
, calculate sum = low * low + high * high
. If sum == c
, then the two integers are found, so return true
. If sum > c
, then sum
is too large, so decrease high
by 1. If sum < c
, then sum
is too small, so increase low
by 1. If the two integers can’t be found, return false
.
class Solution {
public boolean judgeSquareSum(int c) {
int low = 0, high = (int) Math.sqrt(c);
while (low <= high) {
int sum = low * low + high * high;
if (sum == c)
return true;
else if (sum > c)
high--;
else
low++;
}
return false;
}
}