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