一:题目
二:思路
完全平方数:若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数
思路: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;}
};
菜鸡杰又水了一道,感觉二分法挺有意思 查找效率虽然不高,但至少提供了一种思路,这道题刚做差点暴力枚举,但毕竟是二分法的练习题嘛 加油 素昧谋面的你!!!