Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!
我的博客:<但凡.
我的专栏:《编程之路》、《题海拾贝》、《数据结构与算法之美》
欢迎点赞,关注!
目录
1、题目
2、题解
2.1第一种方法(更好)
2.2第二种方法
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的幂。
但是这种方法很明显有一个弊端,就是套用了循环。他的耗时必然是比第一种方法多的。
好了,今天的内容就分享到这,我们下期再见!