专栏名称: 算法与数据结构
算法与数据结构知识、资源分享
目录
相关文章推荐
九章算法  ·  找工而已,千万不要太“老实” ·  3 天前  
九章算法  ·  寒潮来袭!微软开启“清仓式”裁员! ·  5 天前  
算法与数学之美  ·  1964年,一个知青在看钱学森的论文时,发现 ... ·  3 天前  
算法与数学之美  ·  宇树科技创始人王兴兴34岁 ·  3 天前  
算法与数学之美  ·  王昱珩,清华毕业20年不上班,每年靠专利使用 ... ·  3 天前  
51好读  ›  专栏  ›  算法与数据结构

漫画:判断 2 的乘方

算法与数据结构  · 公众号  · 算法  · 2017-01-11 10:14

正文

来自:梦见(微信号:dreamsee321)

已获转载授权


小灰陷入了回忆当中……

题目:实现一个方法,判断一个正整数是否是2的乘方(比如16是2的4次方,返回True;18不是2的乘方,返回False)。要求性能尽可能高。

解法一:

创建一个中间变量Temp,初始值是1。然后进入一个循环,循环中每次让Temp和目标整数比较,如果相等,则说明目标整数是2的乘方;如果不相等,则让Temp增大一倍,继续循环比较。当Temp大于目标整数时,说明目标整数不是2的乘方。

如果目标整数的大小是N,则此方法的时间复杂度是O(LogN)。

解法二:

非常有趣也非常简单的解法。因为2的乘方都符合一个规律,即 N&N-1 等于 0,所以直接用这个规律判断即可。该算法时间复杂度是O(1)。

思考题:

实现一个方法,求出一个正整数转换成二进制后的数字“1”的个数。要求性能尽可能高。

来自:梦见(微信号:dreamsee321)



本文编号311,以后想阅读这篇文章直接输入311即可。

●输入m可以获取到文章目录。

相关推荐↓↓↓
 

Java编程

推荐15个技术类公众微信

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

推荐文章
九章算法  ·  找工而已,千万不要太“老实”
3 天前
算法与数学之美  ·  宇树科技创始人王兴兴34岁
3 天前
诗词天地  ·  古今民间谚语大全,市井语大智慧
7 年前
不正常人类研究中心  ·  见面少没关系
7 年前
宇宙解码  ·  开眼了!一分钟看完地球物种演变
7 年前