LC 231 power of 2

 ------------------------之前写笔记是不过脑子吗?????自己看都被恶心到了。。。。

以为搜易贼

两分钟写好的东西果然。。

public class Solution {
public boolean isPowerOfTwo(int n) {
int result=0;
while(true)
{
result=n/2;
if(result==1)
return false;
else if(result==0)
return true;
else
continue;
}

}
}

很明显把求余和取整弄混了

2就一点都不对了。。一定一定要取几个特殊的例子!!!蓝而2并不特殊

我太蠢了

最后AC代码如下----递交两次-第一次是0,第二次是1,估计再做power3 就得把0,1,2全部带入检验了!!

public class Solution {
public boolean isPowerOfTwo(int n) {
int result=n;
while(true)
{
if(result==1)
return true;
if(result==0)
return false;

if(result%2!=0)
return false;
result=result/2;
}

}
}

事实证明。我还是太naive

 return (n>0) && (!(n&(n-1)));  一句话,就完了

&--按位与或者取地址

n=10100,n-1=10011;n&(n-1)=10000;】

如果是2的幂,其二进制表示一定是1 后面000·······这样

然而我还不明白这咋回事--去看看编程之美

---恢复内容结束---

原文地址:https://www.cnblogs.com/Cherrylalala/p/5897786.html