题目:
题解:
就是一个非常普通的二分查找,但是需要注意的是查找的上下界,因为是完全平方,所以可以把上界设为这个数的一半,但是要特殊处理num等于1的时候。
bool isPerfectSquare(int num) {
if(num==1)return true;
long l=1,r=num/2,mid;
while(l<=r){
mid=(l+r)>>1;
if(mid*mid==num)return true;
else if(mid*mid<num)l=mid+1;
else r=mid-1;
}
return false;
}