50. Pow(x, n)
50. Pow(x, n)
分治法的基本思想是将一个大问题分解成若干个相同或相似的小问题,递归地解决这些小问题,然后将这些小问题的解合并起来得到原问题的解。
class Solution:def myPow(self, x: float, n: int) -> float:# 内部定义了一个嵌套的辅助函数 pow,用于实际的计算。def pow(n: int):if n == 0:return 1.00000y = pow(n//2)return y*y if n%2==0 else y*y*x# x^n 等于 1 / x^(-n)# 根据 n 的正负,决定是直接调用 pow(n) 还是 1.00000 / pow(-n)return pow(n) if n > 0 else 1.00000/pow(-n)
时间复杂度和空间复杂度
- 时间复杂度:每次递归调用都将问题规模减半(
n
除以 2),因此时间复杂度为O(log n)
。 - 空间复杂度:递归的深度为
log n
,因此空间复杂度也是O(log n)
(由于递归调用栈)