Valid Perfect Square

367. Valid Perfect Square

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
public class Solution {
    public boolean isPerfectSquare(int num) {
        long low = 0, high = num;

        while (low + 1 < high) {
            long middle = low + (high - low) / 2;
            
            if (middle * middle == num) {
                return true;
            } else if (middle * middle > num) {
                high = middle;
            } else {
                low = middle;
            }
        }
        
        if (high * high == num) {
            return true;
        }
        if (low * low == num) {
            return true;
        }
        
        return false;
    }
}

Hope this helps,
Michael

DigitalOcean Referral Badge