这题考察的是二分,这题只需要考虑越每越界即可。
知识点:
1.在l+r之间加上1ll防止mid越界
2.把mid除到右边去,防止mid*mid越界。
class Solution {
public:
bool isPerfectSquare(int num) {
int l=1,r=num;
while(l<r){
int mid=(l+1ll+r)/2;
if(mid<=num/mid)l=mid;
else r=mid-1;
}
return l*l==num;
}
};