Given a positive integer num, write a function which returns True if num is a perfect square else False.
Note: Do not use any built-in library function such as sqrt.
Example 1:
Input: 16
Returns: True
Example 2:
Input: 14
Returns: False
方法:二分法,注意精度
class Solution {
private:
bool binarySort(int num){
int left = 0, right = num/2;
bool isHas = false;
while(left<=right){
long middle = left + (right - left) /2;
if(middle*middle==num){
isHas = true;
break;
}
else if (middle * middle >num)
right = middle - 1;
else
left = middle + 1;
}
return isHas;
}
public:
bool isPerfectSquare(int num) {
return num==1?true:binarySort(num);
}
};