有效的完全平方数
解题思路:
-
二分查找,左闭右闭区间方法;
-
直接去掉 num 的一半+1,因为 num>4 以上的数字的中间数平方都大于 num
复杂度:
-
时间复杂度:O(logn),其中 n 为正整数 num 的最大值;
-
空间复杂度:O(1);
代码实现:
function isPerfectSquare(num: number): boolean {
let left = 1;
// 直接去掉 num 的一半+1,因为 num>4 以上的数字的中间数平方都大于 num
let right = (num >> 1) + 1;
while (left <= right) {
let mid = left + (right - left >> 1);
if (num > mid * mid) {
left = mid + 1;
} else if (num < mid * mid) {
right = mid - 1;
} else {
return true;
}
}
return false;
};
leetcode🧑💻 454. 四数相加 II
上一篇