Description

Given a positive integer num, return true if num is a perfect square or false otherwise.

A perfect square is an integer that is the square of an integer. In other words, it is the product of some integer with itself.

You must not use any built-in library function, such as sqrt.

Example 1:

Input: num = 16 Output: true Explanation: We return true because 4 * 4 = 16 and 4 is an integer.

Example 2:

Input: num = 14 Output: false Explanation: We return false because 3.742 * 3.742 = 14 and 3.742 is not an integer.

Constraints:

  • 1 <= num <= 231 - 1

Code

Time Complexity: , Space Complexity:

class Solution {
public:
    bool isPerfectSquare(int num) {
        long long l = 1, r = num;
        while(l < r) {
            long long m = l + (r - l) / 2;
            long long product = m * m;
            if(product < num) {
                l = m + 1;
            } else {
                r = m;
            }
        }
        return l * l == num;
    }
};

Source