在使用二分法完成题目时,使用如下条件判断时
if(mid < num/mid)
当输入 num = 5,当二分查找到 mid = 2时, 出现了mid = num/mid的情况,暴露出了这种判断条件的缺陷。
class Solution {
public:bool isPerfectSquare(int num) {int left = 1;int right = num;if(num == 0){return true;}while(left <= right){long mid = left + (right - left)/2;if(mid * mid < num){left = mid + 1;}else if(mid * mid > num){right = mid -1;}else {return true;}}return false;}
};