一:题目
二:上码
class Solution {
public:/**完全平方数:若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数思路:1.我们将num先折半,因为它是某个整数的平方,而这个数的范围肯定不会超过num的一半2.那么这就相当于在[left,num/2]中查找某个数,其的平方正好可以是num*/bool isPerfectSquare(int num) { if(num == 1) return true;int left = 0;int right = num/2; //一个数的完全平方数是的平方根是不会超过num/2的一半的while (left <= right) {long mid = (right-left)/2 + left;long square = mid * mid;if(square < num) {//当平方小于num时候 我们需要在更大的范围内寻找midleft = mid + 1;} else if (square > num) {//当平方大于num的时候,我们需要更小的范围内寻找midright = mid - 1;} else {return true;}}return false;}
};