其他分享
首页 > 其他分享> > 力扣 367. 有效的完全平方数

力扣 367. 有效的完全平方数

作者:互联网

题目

给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。

进阶:不要 使用任何内置的库函数,如 sqrt 。

示例

输入:num = 16
输出:true

输入:num = 14
输出:false

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-perfect-square
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法1

二分查找。
注意提示:!!!他喵的会溢出啊我去
1 <= num <= 2^31 - 1

所以 mid*mid 要 long 一下解决溢出,不然就会:
在这里插入图片描述

Java实现
class Solution {
    public boolean isPerfectSquare(int num) {
        int n = num / 2;
        int l = 1, r = n;
        if (num == 1) return true;

        while (l <= r){
            int mid = l + r >> 1;

            if ((long)mid * mid > num) r = mid - 1;
            else if ((long)mid * mid < num) l = mid + 1;
            else return true;
        }
        return false;
    }
}

在这里插入图片描述

标签:平方,false,int,mid,long,力扣,num,367,true
来源: https://blog.csdn.net/qq_42467009/article/details/121145053