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/

posted @   振袖秋枫问红叶  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示