题目地址:平方数之和
题目描述:
给定一个非负整数 c
,你要判断是否存在两个整数 a
和 b
,使得 a^2 + b^2 = c。
示例1:
输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5
示例2:
输入: 3 输出: False
解题思路:
1.即求sqrt(c)为半径的圆上的整数坐标。由圆的对称性将坐标限定在第一象限且在直线y = x的下方。即x^2+y^2=c且x=y.所以y^2=c/2,而y要小于等于这个值。
2.从y = 0开始遍历,判断x的值是否是整数。
代码:
class Solution {
public boolean judgeSquareSum(int c) {
for(int y = 0; y * y <= c / 2; y++){
double x = Math.sqrt(c - y * y);
if(x == (int)x)
return true;
}
return false;
}
}