首页 > 其他 > 详细

leetcode 50.Pow(x, n)

时间:2020-02-15 23:01:47      阅读:53      评论:0      收藏:0      [点我收藏+]
  • 思路:
    • 众所周知,如果要求x的n次方,最朴素的方法一定是把x连乘n次,这样时间复杂度是O(n),显然太差了。
    • 优化1:如果能求得2^k = n的话,x^n = x^(2^k) = (x^2)^k,只需要将x^2连乘k次,这样时间复杂度是O(log2n),但是很难找到这样的k。
    • 优化2:只要能找到2^k1 + 2^k2 + ... = n就好了,这样时间复杂度还是O(log2n)。
  • 这一想法可以通过位运算轻易解决,比如9的二进制是1001,也就是从右往左数第i位是1,答案就乘上x^(2^i)。

leetcode 50.Pow(x, n)

原文:https://www.cnblogs.com/xiaobaizzz/p/12313937.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!