Skip to content

力扣链接:367.有效的完全平方数

难度:⭐

解题关键词:二分查找

解题思路:使用二分查找。判断 mid 元素平方是否等于目标元素,并且根据乘积动态调整左右指针。

typescript
function isPerfectSquare(num: number): boolean {
  let left = 1;
  let right = num;

  while (left <= right) {
    const mid = Math.floor((right - left) / 2) + left;

    const res = mid * mid;
    if (res === num) return true;

    if (res > num) {
      right = mid - 1;
    } else {
      left = mid + 1;
    }
  }

  return false;
}