题目描述
解题思路
- 首先定义左右指针
- 判断这个数是不是完全平方数,我们要求这个数有没有开方数
- 我们定义一个二分查找。查找出
mid*mid>=num
的这个mid - 我们保持这个mid
- 最后判断
ans*ans==num
,将结果返回
代码实现
class Solution {
public:
bool isPerfectSquare(int num) {
long long l=0,r=100000;
long long ans;
// 求出他的开方数
while(l<=r){
long long mid=(l+r)>>1;
if(mid*mid>=num){
ans=mid;
r=mid-1;
}else{
l=mid+1;
}
}
return ans*ans==num;
}
};