返回轨道
算法 · 2026-05-14 · 23 阅读

P174 验证完全平方数

算法 23 阅读

信号摘要

难度:Easy · 时长:07:09 · leetcode 367 · lintcode 777

P174 验证完全平方数

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你一个正整数 num,你要实现一个函数,来判断它是否为完全平方数。

注意,不能使用内置的平方根函数(sqrt)。

比如说,给你的正整数是 9,

num = 9

9 是 3 的平方,因此 9 是一个完全平方数,返回 true。

再比如说,给你的正整数是 8,

num = 8

8 不是一个完全平方数,返回 false。

相关视频:实现平方根函数

代码

public class AlgoCasts {

  // Time: O(log(num)), Space: O(1)
  public boolean isPerfectSquareBinarySearch(int num) {
    long low = 1, high = num;
    while (low <= high) {
      long mid = low + (high - low) / 2;
      long mid2 = mid * mid;
      if (mid2 == num) return true;
      else if (mid2 > num) high = mid - 1;
      else low = mid + 1;
    }
    return false;
  }

  // Time: O(log(num)), Space: O(1)
  public boolean isPerfectSquareNewton(int num) {
    long x = num;
    while (x*x > num) {
      x = (x + num/x) / 2;
    }
    return x*x == num;
  }

}

📡 通讯频道