Problem

Given a positive integer num, write a function which returns True if num is a perfect square else False.

Example

For example:
Given num = 16
Returns True

Solution

class Solution {
    public boolean isPerfectSquare(int num) {
        if (num == 1) return true;
        long n = (long)num;
        long start = 1, end = n/2;
        
        while (start <= end) {
            long mid = start+(end-start)/2;
            if (mid*mid == n) return true;
            else if (mid*mid < n) start = mid+1;
            else end = mid-1;
        }
        return false;
    }
}

linspiration
161 声望53 粉丝