平方数之和(No.633)
题目:平方数之和
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a 的平方加 b 的平方等于 c 。
示例:
输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 输入: 3 输出: False
思考:
这题因为 a * a + b * b = c,所以 a < 根号c,b < 根号c。 所以可以用两个变量i = 0,j = 根号c, 当 i <= j 时,计算i * i + j * j 当结果小于c则i++,否则j--, 若结果等于c则返回true。
实现:
class Solution { public boolean judgeSquareSum(int c) { int i = 0; int j = (int) Math.sqrt(c); while (i <= j) { int num = i * i + j * j; if (num == c) { return true; } if (num < c) { i++; } else { j--; } } return false; } }