给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。
示例 1:
输入:c = 5
输出:true
解释:1 * 1 + 2 * 2 = 5
示例 2:
输入:c = 3
输出:false
提示:
0 <= c <= 231 - 1
解题思路:
1.平方根可以用java的Math.sqrt方法
2.两个数的平方和能否等于目标数
完整代码:
class Solution {
/**
* 判断一个非负整数c是否可以表示为两个整数的平方和
*
* @param c 需要判断的非负整数
* @return 如果存在整数a和b,使得a^2 + b^2 = c,返回true;否则返回false
*/
public boolean judgeSquareSum(int c) {
// 从0开始遍历可能的整数a,直到a^2超过c为止
for (long a = 0; a * a <= c; a++) {
// 根据勾股定理计算b的可能值
long b = (long) Math.sqrt(c - a * a);
// 检查当前的a和计算出的b是否满足条件
if (a * a + b * b == c) {
// 如果满足条件,即找到了a和b,使得a^2 + b^2 = c,返回true
return true;
}
}
// 如果遍历完所有可能的a后仍未找到满足条件的整数对,返回false
return false;
}
}
标签:平方,633,false,示例,非负,整数,true
From: https://www.cnblogs.com/java-cheng/p/18524435