自学内容网 自学内容网

题海拾贝:力扣 231. 2 的幂

        Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!

a4d168d4159947c3890aba5ff32c8d10.gif

我的博客:<但凡.

我的专栏:《编程之路》《题海拾贝》《数据结构与算法之美》

欢迎点赞,关注!

 

目录

 

1、题目

2、题解

2.1第一种方法(更好)

2.2第二种方法


 

1、题目

      279d788e59b948549a38ec93c83b8942.png

2、题解

2.1第一种方法(更好)

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

        这里我们只写函数部分(力扣的题都是这样的),n&(n-1)这个操作可以去除二进制位的最右边的1,如果说去除最右边的1后等于0,则说明n的二进制表示中只含有一个1,那么他就是2的幂。另外,bool类型只有两个返回值,一个是真 true,另一个是假 false。

2.2第二种方法

bool isPowerOfTwo(int n) {
    int k=0;
   while(n)
   {
    n=(n>>1)&1;
    k++;
   }
   if(k==1)
   {
    return true;
   }
   return false;
}

        这种方法是利用去一操作,将将二进制串中的每一位都判断一下是不是一,不是一就去掉,检测去一的次数是不是1,从而判断他是不是2的幂。

        但是这种方法很明显有一个弊端,就是套用了循环。他的耗时必然是比第一种方法多的。

        好了,今天的内容就分享到这,我们下期再见!

 


原文地址:https://blog.csdn.net/2401_87995839/article/details/144301371

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!