题海拾贝:力扣 231. 2 的幂
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!
我的博客:<但凡.
我的专栏:《编程之路》、《题海拾贝》、《数据结构与算法之美》
欢迎点赞,关注!
目录
1、题目
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)!