快速幂
快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。
一篇关于快速幂的好文章.
作者:jyd
链接:https://leetcode-cn.com/problems/powx-n/solution/50-powx-n-kuai-su-mi-qing-xi-tu-jie-by-jyd/
关于快速幂的题目
Pow(x, n)
力扣第50题: https://leetcode-cn.com/problems/powx-n/
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。
通过次数88,769提交次数249,427
1. 快速幂解法(迭代解法)
如果读懂了文章(主要是读懂分治思想理解快速幂), 这道题就很简单了.
1 | class Solution: |
复杂度分析
时间复杂度:O(logn),即为对 n 进行二进制拆分的时间复杂度。
空间复杂度:O(1)。
2. 快速幂解法(递归解法)
1 | class Solution: |
复杂度分析
时间复杂度:O(logn),即为递归的层数。
空间复杂度:O(logn),即为递归的层数。这是由于递归的函数调用会使用栈空间。
3. 还有一种我之前看别人的解法,挺有趣的
1 | class Solution: |