力扣 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