367有效的完全平方数
给定一个 正整数 num
,编写一个函数,如果 num
是一个完全平方数,则返回 true
,否则返回 false
。
进阶:不要 使用任何内置的库函数,如 sqrt
。
示例 1:
输入:num = 16 输出:true
示例 2:
输入:num = 14 输出:false
提示:
-
1 <= num <= 2^31 - 1
思路
这道题跟上一题几乎一模一样,我们的思路仍然是求这个数的右边界,如果left-1的平方等于num,就返回true,反之返回false
class Solution { public boolean isPerfectSquare(int num) { int left = 1; int right = num/2; int mid = 0; if(num==1) { return true; } while(left<=right) { mid = (left+(right-left)/2); if(mid <= num/mid) { left = mid+1; }else { right = mid-1; } } return (left-1)*(left-1) == num; } }