题目链接
https://leetcode-cn.com/problems/sum-of-square-numbers/
解题思路
1.思路很容易想到,遍历0~sqrt(c),然后判断c-x*x是否为平方数即可;
2.有一个坑点是用 int 存储的话会报错~
我就很纳闷,明明c是int型,怎么sqrt( c )会溢出!!!
后来想到可能是sqrt()函数处理时会超出int型,于是查了下sqrt的源码,果然~~
看了这篇博客之后,,,震惊!!!
sqrt函数详解
代码展示
class Solution {
public:
bool judgeSquareSum(int c) {
if(c==0)return true;
for(long i=1;i*i<=c;i++){
double f=sqrt(c-i*i);
if(f==(int)f)
return true;
}
return false;
}
};
总结
源码是最吊的~~~