zoukankan
html css js c++ java
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)。
查看全文
相关阅读:
Redis 设计与实现(第三章) -- 链表adlist
Redis 设计与实现(第二章) -- SDS
MySQL索引背后的数据结构及算法原理(转)
MySQL索引原理及慢查询优化(转)
MySQL常见的一些面试题(未完待续)
js 获取前天、昨天、今天、明天、后天的时间
linux 下nohup 使用
java split 分割字符串用法
Python 获取URL访问的HEAD头信息
MySQL日期数据类型、时间类型使用总结
原文地址:https://www.cnblogs.com/xiaobaizzz/p/12313937.html
最新文章
集合之TreeMap
集合之Map
集合之HashMap、Hashtable
设计模式之结构型--代理模式
设计模式之结构型--适配器模式
设计模式之创建型--工厂模式
设计模式之创建型--单例模式
[µC/GUI 学习]µC/GUI移植
[Altium Designer 学习]怎样输出Gerber文件和钻孔文件
[Altium Designer 学习]怎样添加3D模型
热门文章
[STM32F4xx 学习] SPI与nRF24L01+的应用
[STM32F4xx 学习] 如何在RAM中调试程序
[STM32F4xx 学习] SPI小结
[C 语言基础] 如何调用不同文件中的函数
[Raspberry Pi] 入门使用
Redis 设计与实现(第九章) -- 数据库
Redis 设计与实现(第八章) -- 对象
Redis 设计与实现(第六章) -- 整数集合(intset)
Redis 设计与实现(第五章) -- 跳跃表(skiplist)
Redis 设计与实现(第四章) -- 字典dict
Copyright © 2011-2022 走看看