题目:
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c
示例 1:
输入:c = 5
输出:true
解释:1 * 1 + 2 * 2 = 5
示例 2:
输入:c = 3
输出:false
示例 3:
输入:c = 4
输出:true
示例 4:
输入:c = 2
输出:true
示例 5:
输入:c = 1
输出:true
提示:
0 <= c <= 2的31次幂减1
暴力破解
思路:
首先,我们分析下题目,如果想要找到两个数的平方和等于给定的c的值;我们可以想到以下条件:
如果符合条件的a,b存在,那么a和b这两个数一定在0和sqrt©之间
最简单的也是最容易想到的思路:暴力破解–
对于两层范围在[0,sqrt©]的for循环,如果找到ii+jj的值与给定的c相等,那么返回true,否则返回false。
但是,对于给定的数字规模2的31次幂-1这样大的数字,这样没有技术含量的算法是一定会超时的,代码和结果如下给出:
class Solution {
public boolean judgeSquareSum(int c) {
int tar = (int)Math.sqrt((double</