题目:实现一个方法,判断一个正整数是否是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"的个数.要求性能尽可能高.
最全期末考试精华资料大全!超两百门课程复习资料,内容太多,赶紧点赞收藏!