LeetCode 367. 有效的完全平方数
题目描述
思路分析
- 使用二分查找法来判断一个数是否为完全平方数。
- 初始化左右边界 left 和 right,分别为 1 和 num。
- 计算中间值 mid,并判断 mid 的平方是否等于 num。
- 如果 mid 的平方等于 num,则返回 true;如果 mid 的平方小于 num,则将左边界 left 移动到 mid + 1;否则将右边界 right 移动到 mid - 1。
- 如果遍历结束仍未找到,则返回 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),我们只使用了常数级别的额外空间。
1
write your code here
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用