LeetCode 367. 有效的完全平方数

题目描述

🔥 367. 有效的完全平方数

思路分析

  1. 使用二分查找法来判断一个数是否为完全平方数。
  2. 初始化左右边界 left 和 right,分别为 1 和 num。
  3. 计算中间值 mid,并判断 mid 的平方是否等于 num。
  4. 如果 mid 的平方等于 num,则返回 true;如果 mid 的平方小于 num,则将左边界 left 移动到 mid + 1;否则将右边界 right 移动到 mid - 1。
  5. 如果遍历结束仍未找到,则返回 false。

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
func isPerfectSquare(num int) bool {
	if num < 1 {
		return false
	}
	left, right := 1, num
	for left <= right {
		mid := left + (right-left)/2
		square := mid * mid
		if square == num {
			return true
		} else if square < num {
			left = mid + 1
		} else {
			right = mid - 1
		}
	}
	return false
}
  • 时间复杂度: O (log n),其中 n 是输入的整数 num。二分查找的时间复杂度为对数级别。
  • 空间复杂度: O (1),我们只使用了常数级别的额外空间。

🍏 点击查看 Java 题解

1
write your code here
本文作者:
本文链接: https://hgnulb.github.io/blog/2022/88914829
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!