367. 有效的完全平方数https://leetcode.cn/problems/valid-perfect-square/
难度简单387
给定一个 正整数 num
,编写一个函数,如果 num
是一个完全平方数,则返回 true
,否则返回 false
。
进阶:不要 使用任何内置的库函数,如 sqrt
。
示例 1:
输入:num = 16 输出:true
示例 2:
输入:num = 14 输出:false 提示:
1 <= num <= 2^31 - 1
通过次数155,399提交次数346,351
class Solution {
public boolean isPerfectSquare(int num) {
// 方法一:【打表】计算出1-2^31-1的所有完全平方数,然后查num是否在其中。
// 方法二:【暴力遍历】 从x=开始,计算x*x 是否等于num
// 方法三:【二分查找】
// 二分查找
int start = 0;
int end = num;
int mid;
while(start<=end)
{
mid = (end-start)/2+start;
long ans = (long)mid*mid;
if(ans > num) end = mid-1;
else if(ans < num) start = mid+1;
else return true;;
}
return false;
}
}