LeetCode 50. Pow(x, n)
题目描述
思路分析
快速幂
参考代码
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),仅使用常数变量保存结果和当前幂。
1
write your code here
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用