LeetCode 题解:50. Pow(x, n),迭代分治,JavaScript,详细注释
原题链接:https://leetcode-cn.com/problems/powx-n/
解题思路:
x的n次幂可以分解为x的n/2次幂的平方。
按照步骤1的思路,通过递归逐级分解,时间复杂度即为O(logn)。
如果n为负,问题可以转换为计算1除以x的n次幂。
对于代码中
power
、result
、subResult
的关系,可以参考官方题解和[50. Pow(x, n) (快速幂,清晰图解)](https://leetcode-cn.com/problems/powx-n/solution/50-powx-n-kuai-su-mi-qing-xi-tu-jie-by-jyd/)。为了方便理解,我以myPow(2, 10)
为例,列出每次循环的结果。表格中power
的值表示每次进入循环时的值,而非循环结束时的值,具体可以参考console.log
打印的位置。
| power | subResult | result |
| ----- | --------- | ------ |
| 10 | x^2 | 1 |
| 5 | x^4 | x^2 |
| 2 | x^8 | x^2 |
| 1 | x^16 | x^10 |
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/f0770f96b8ffb8d8fa67cb573】。文章转载请联系作者。
评论