LeetCode 633.平方数之和

题目

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a^2 + b^2 = 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

思路

这题我的思路就是遍历从1开始到sqrt(c)为止,将sqrt(c - i * i)(int)sqrt(c - i * i)进行比较。如果相等的话,说明可以拆成平方和的形式,如果不等的话,则不能。另外有两个特殊值,0与1要单独拿出来讨论。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 使用了sqrt()函数故要加上math.h头文件
#include<math.h>
class Solution {
public:
bool judgeSquareSum(int c)
{
if (c == 1 || c == 0)
return true;
for (int i = 1; i <= sqrt(c); i++)
{
if (sqrt(c - i * i) == (int)sqrt(c - i * i))
return true;
}
return false;
}
};

LeetCode 633.平方数之和
https://excelius.xyz/leetcode-633-平方数之和/
作者
Ther
发布于
2021年4月28日
许可协议