这题做法几乎跟69题一模一样,参见https://www.cnblogs.com/aaronliu1991/p/11696059.html
时间O(log n)
空间O(1)
1 /** 2 * @param {number} num 3 * @return {boolean} 4 */ 5 var isPerfectSquare = function(num) { 6 // corner case 7 if (num <= 0) { 8 return false; 9 } 10 if (num === 1) { 11 return true; 12 } 13 14 // normal case 15 let low = 1; 16 let high = num; 17 while (low <= high) { 18 let mid = parseInt(low + (high - low) / 2); 19 if (mid * mid === num) { 20 return true; 21 } else if (mid * mid < num) { 22 low = mid + 1; 23 } else { 24 high = mid - 1; 25 } 26 } 27 return false; 28 };