Leetcode 367. Valid Perfect Square (Medium) (cpp)
Tag: Binary Search, Math
Difficulty: Medium
/*
367. Valid Perfect Square (Medium)
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 {
public:
bool isPerfectSquare(int num) {
int l = 1, r = num;
while (l < r - 1) {
int mid = (l + r) / 2;
if (mid * mid == num) return true;
else if (mid > num / mid) r = mid;
else l = mid;
}
if ((l * l == num) || (r * r == num)) return true;
return false;
}
};