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
传统方法:
bool isPerfectSquare(int num) {
int a = sqrt(num);
if (a * a == num) {
return true;
}
return false;
}
一种比较新型的求解法:
bool isPerfectSquare(int num) {
if (num < 0) {
return false;
}
if (num <= 1) {
return true;
}
int left = 0;
int right = num;
long mid;
long val;
while(left <= right) {
mid = (left + right) / 2;
val = mid * mid;
if (val == num) {
return true;
} else if (val > num) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return false;
}