[LeetCode] 367. Valid Perfect Square

这题做法几乎跟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 };

猜你喜欢

转载自www.cnblogs.com/aaronliu1991/p/11696088.html