633.平方数之和(双指针) 难度:简单
题目描述:
给定一个非负整数 c
,你要判断是否存在两个整数 a
和 b
,使得 a²+ b² = c
。
我的思路:
一开始我用的是两层for
循环,结果超出师姐限制,把范围改到0-sqrt(c)
也不行。
所以用双指针来解题,简单的多。
总结:解题时,我总是习惯于用自己的逻辑思维来解题,而不是优先考虑算法去解题,这就导致我经常用一些很蠢的方法,容易超出时间限制。
技能补充:
开方代码:Math.sqrt(a)
我的Java代码:
int l = 0; //左指针
int r = (int)Math.sqrt(c); //右指针
while(l<=r){
if(l*l+r*r == c){
return true;
}else if(l*l+r*r < c){
l++;
}else{
r--;
}
}
return false;