Skip to content

Commit 9a37226

Browse files
authored
Create (查找)633、平方数之和
1 parent b9d710a commit 9a37226

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

(查找)633、平方数之和

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。
3+
4+
示例1:
5+
6+
输入: 5
7+
输出: True
8+
解释: 1 * 1 + 2 * 2 = 5
9+
10+
11+
12+
示例2:
13+
14+
输入: 3
15+
输出: False
16+
*/
17+
18+
bool judgeSquareSum(int c)
19+
{
20+
long a = 0;
21+
long b = sqrt(c);
22+
long sum = 0;
23+
24+
while(a <= b)
25+
{
26+
sum = a * a + b * b;
27+
if(sum == c)
28+
return true;
29+
else if(sum < c)
30+
a++;
31+
else
32+
b--;
33+
}
34+
35+
return false;
36+
}
37+
38+
/*
39+
这道题就是夹逼查找。
40+
首先是平方数之和,则两个数肯定都不大于这个数的开方,因此只需要在0~这个数的开方之间查找满足题意的
41+
数字即可。一个指针从0开始向后递增,另一个指针从开方开始向前递减。
42+
如果平方和小于给定的数字,说明小的数太小,向后移动;
43+
如果平方和大于给定的数字,说明大的数太大,向前移动。
44+
找到符合题目要求的平方和后,结束循环,否则说明不是平方数之和。
45+
*/

0 commit comments

Comments
 (0)