给定一个非负整数 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,返回truereturn true;}}// 如果遍历完所有可能的a后仍未找到满足条件的整数对,返回falsereturn false;}}