367. 有效的完全平方数


二分查找

class Solution {
    public boolean isPerfectSquare(int num) {

        int left = 1;
        int right = num;

        while (left <= right){

            int mid = left + (right - left) / 2;

            /**
             * 避免整形溢出,转换为long
             */
            if ((long) mid * mid > num){
                right = mid - 1;
            }
            else if ((long) mid * mid < num){
                left = mid + 1;
            }
            else {
                return true;
            }
        }

        return false;
    }
}

/**
 * 时间复杂度 O(logn)
 * 空间复杂度 O(1)
 */

https://leetcode-cn.com/problems/valid-perfect-square/