Valid Perfect Square

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

Do not use any built-in library function such as sqrt.Have you met this question in a real interview? YesProblem Correction

Example

For example: Given num = 16 Returns True

套用二分法模板,注意overflow,要cast成long,时间复杂度O(logN)

public class Solution {
    /**
     * @param num: a positive integer
     * @return: if num is a perfect square else False
     */
    public boolean isPerfectSquare(int num) {
        // write your code here
        long start = 1, end = (long)num;
        
        while(start + 1 < end){
            long mid = start + (end -start)/2;
            System.out.println(mid + "    "+ mid*mid);
            
            if(mid * mid < num){
                start = mid;
            }
             else{
                 end = mid;
             }
        }
        
        
        if(start * start == (long)num || end * end == (long)num)
            return true;
            
        return false;
    }
}

Last updated