很简单···判断一个整数是否是2的次方
自己写的办法就是傻傻的递归除以2
代码:
public class Solution {
public boolean isPowerOfTwo(int n) {
if(n==1){
return true;
}
if(n==0){
return false;
}
if(n%2!=0){
return false;
}
return isPowerOfTwo(n/2);
}
}
其实还有更简单的办法
如果一个数是2的次方,那他的二进制形式就是:100000···
那么他-1的数的二进制形式就是:011111····
相与之后肯定是全0
于是有了这段一行的代码:
public class Solution {
public boolean isPowerOfTwo(int n) {//if n is power of 2 ,n just has one bit is 1
return n>0 && (n&(n-1))==0;
}
}
这几天都在做有关二进制啊,位操作啊之类的问题,还好以前C语言都学过,刷这些题无非就是想在大四的时候找工作的时候有些底气,虽然很功利,但是确实有些人想出来的解决方法让我感叹!
Keep Going On!连续了10多天了,听说21天就可以养成一个习惯的哦···快到21天啊,已经越来越懒了···