会员
周边
新闻
博问
融资
云市场
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
xiaobaizzZ
博客园
首页
新随笔
联系
管理
订阅
leetcode 50.Pow(x, n)
思路:
众所周知,如果要求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)。
posted on
2020-02-15 21:44
xiaobaizzZ
阅读(
125
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告