一:题目
二:思路
完全平方数:若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数
思路:1.我们将num先折半,因为它是某个整数的平方,而这个数的范围肯定不会超过num的一半
2.那么这就相当于在[left,num/2]中查找某个数,其的平方正好可以是num
三:上码
class Solution {
public:
/**
完全平方数:若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数
思路:1.我们将num先折半,因为它是某个整数的平方,而这个数的范围肯定不会超过num的一半
2.那么这就相当于在[left,num/2]中查找某个数,其的平方正好可以是num
*/
bool isPerfectSquare(int num) {
if(num == 1)
return 1;
int left = 0;
int right = num/2;
while(left <= right){
long mid =(long) (left+right)/2;
long square =(long) mid * mid;
if(square < num){
left = mid + 1;
}else if(square > num){
right = mid - 1;
}else{
return true;
}
}
return false;
}
};
菜鸡杰又水了一道,感觉二分法挺有意思 查找效率虽然不高,但至少提供了一种思路,这道题刚做差点暴力枚举,但毕竟是二分法的练习题嘛 加油 素昧谋面的你!!!