力扣367题
算法学习推荐网站:代码随想录
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要使用任何内置的库函数,如 sqrt 。
思路:一样是二分法,普通二分法即可
前提:正整数里面,除了1之外,每个数的算术平方根都小于等于自己的一半
思路:我们可以直接二分法,以这个数字的一半来作为右边界
题解:
class Solution {
public boolean isPerfectSquare(int num) {
if(num==1){
return true;
}
int left=0;
int right=num/2;
while(left<=right){
int mid=left+(right-left)/2;
long target=(long)mid*mid;
if(target<num){
left=mid+1;
}
if(target>num){
right=mid-1;
}
if(target==num){
return true;
}
}
return false;
}
}