题目地址
1. 思路
这个题就用二分查找的思想,比LeetCode69x的平方根要简单一些,那个还要处理开平方不是整数的情况,这个直接就按左闭右闭,middle的平方是num就返回true,否则继续迭代二分直到找到middle的平方是num的情况返回true,或者找不到跳出循环返回false.
2. 代码
class Solution {
public://左闭右闭bool isPerfectSquare(int num) {int left = 0;int right = num;while(left <= right){int middle = left + ((right - left) >> 1);if(num > long(middle) * long(middle)){left = middle + 1;}else if(num == long(middle) * long(middle)){return true;}else{right = middle - 1;}}return false;}
};
结果也是顺利通过