Leetcode笔记目录
一、题目描述
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。
示例1:
- 输入: c = 5
输出: true
解释: 1 * 1 + 2 * 2 = 5。
示例2:
- 输入: c = 3
输出: false
提示: 0 <= c <= 2^31-1
二、解题过程
1.思想
双指针的变形题目,注意i指针和j指针是可以相等的。
2.代码
bool judgeSquareSum(int c) {
long int i=0,j=(int)sqrt(c),result=0;
while(i<=j){ //错误1
result = i*i + j*j;
if(result==c) return true;
else if(result>c) j--;
else i++;
}
return false;
}
- 错误
- i和j是可以相等的;
- sqrt要求的参数是double但对于int会自动转型;
三、总结
简单经典的双指针算法,基本想到双指针就能解题。