LeetCode 50. Pow(x, n)

题目描述

50. Pow(x, n)

image-20250507210625324

思路分析

快速幂

image-20250507210722777

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
func myPow(x float64, n int) float64 {
	if n == 0 {
		return 1.0
	}
	if n < 0 {
		x = 1 / x
		n = -n
	}
	if n%2 == 0 {
		return myPow(x*x, n/2)
	} else {
		return x * myPow(x*x, n/2)
	}
}
  • 时间复杂度:O(log n),每次递归都将 n 减半。
  • 空间复杂度:O(log n),递归调用栈的深度为 log n。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func myPow(x float64, n int) float64 {
	if n < 0 {
		x = 1 / x
		n = -n
	}
	res := 1.0
	for n > 0 {
		if n%2 == 1 {
			res *= x
		}
		x *= x
		n /= 2
	}
	return res
}
  • 时间复杂度:O(log n),每次将指数 n 减半。
  • 空间复杂度:O(1),仅使用常数变量保存结果和当前幂。

➡️ 点击查看 Java 题解

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