关闭

Easy-题目22:231. Power of Two

70人阅读 评论(0) 收藏 举报
分类:

题目原文:
Given an integer, write a function to determine if it is a power of two.
题目大意:
给出一个整数,判断是不是2的幂。
题目分析:
跟上题如出一辙,但还有一种方法是利用位运算,即2的幂的最高位是1,其余位全是0这一性质,判断n和n-1按位与是否等于0来解决。@15-信安-L。
源码:(language:c)
递归解法:

bool isPowerOfTwo(int n) {
    return (n==0||n==1)?n:(n%2?0:isPowerOfTwo(n/2));
}

按位与解法:

bool isPowerOfTwo(int n) {
  return (n&n-1)==0&&n>0;
}

暴力枚举:

bool isPowerOfTwo(int n) {
   return (n==1||n==2||n==4||n==8||n==16||n==32||n==64||n==128||n==256||n==512||n==1024||n==2048||n==4096||n==8192||n==16384||n==32768||n==65536||n==131072||n==262144||n==524288||n==1048576||n==2097152||n==4194304||n==8388608||n==16777216||n==33554432||n==67108864||n==134217728||n==268435456||n==536870912||n==1073741824);
}

成绩:
三种算法都是4ms,beats44.98%,众数4ms,55.02%。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:55741次
    • 积分:3195
    • 等级:
    • 排名:第10667名
    • 原创:270篇
    • 转载:53篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论