Given a positive integer num, write a function which returns True if num is a perfect square else False.
和之前的开方的写法类似 都是二分查找 但是要注意这里 有舍入 num/mid可能会出现满足条件但不是平方数的情况,需要在里面再进行一次判断。
class Solution {
public boolean isPerfectSquare(int num) {
int hi = num ;
int lo = 1;
while(lo<=hi)
{
int mid = lo+(hi-lo)/2;
if(mid==num/mid)
{
if(num%mid==0)
return true;
return false;
}
else if (mid<num/mid)
lo=mid+1;
else
hi=mid-1;
}
return false;
}
}