echo

任生命穿梭 时间的角落

0%

平方数之和

633. 平方数之和

给定一个非负整数 c ,你要判断是否存在两个整数 ab,使得 a^2 + b^2 = c。

示例1:

1
2
3
输入: 5
输出: True
解释: 1 * 1 + 2 * 2 = 5

示例2:

1
2
输入: 3
输出: False

我们直接使用暴力法,这里使用了一点技巧。

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public boolean judgeSquareSum(int c) {
for(long i = 0; i * i <= c; i++){
double b = Math.sqrt(c - i * i);
//如果 b 为一个数的平方,代表找到
if(b == (int)b){
return true;
}
}
return false;
}
}

时间复杂度O(√c),空间复杂度O(1)。

最近做 DP 都快 PTSD 了,看到这题居然第一时间想到 DP,人傻了!!