LeetCode 69. x 的平方根

题目描述

69. x 的平方根

image-20230305164335317

思路分析

二分查找上界问题

我们要找的是满足 mid*mid <= x 的最大整数 mid,这就是典型的二分查找上界问题

image-20250507201147736

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func mySqrt(x int) int {
	if x == 0 {
		return 0
	}
	left, right := 1, x
	for left <= right {
		mid := left + (right-left)/2
		if mid == x/mid {
			return mid
		} else if mid < x/mid {
			left = mid + 1
		} else {
			right = mid - 1
		}
	}
	return right
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func mySqrt(x int) int {
	if x == 0 {
		return 0
	}
	left, right := 1, x
	var res int
	for left <= right {
		mid := left + (right-left)/2
		if mid <= x/mid {
			res = mid
			left = mid + 1
		} else {
			right = mid - 1
		}
	}
	return res
}
  • 时间复杂度:O(log x),每次对折查找。
  • 空间复杂度:O(1),只使用常数变量。

➡️ 点击查看 Java 题解

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