We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent b9d710a commit 9a37226Copy full SHA for 9a37226
(查找)633、平方数之和
@@ -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