[Leetcode] 231. 2的冪 java
阿新 • • 發佈:2018-12-09
給定一個整數,編寫一個函式來判斷它是否是 2 的冪次方。
示例 1:
輸入: 1 輸出: true 解釋: 20 = 1
示例 2:
輸入: 16 輸出: true 解釋: 24 = 16
示例 3:
輸入: 218 輸出: false
class Solution { public boolean isPowerOfTwo(int n) { if(n==1){ return true; } if(n%2==0&&n>0){ return isPowerOfTwo(n/2); } else{ return false; } } }
還可以通過二進位制移位。2是10,4是100,8是1000...就是隻有第一位是1,其餘都是0
class Solution { public boolean isPowerOfTwo(int n) { if(n<=0) return false; return countBit(n)==1; } public int countBit(int num){ int count=0; while(num!=0){ count+=(num & 1); num>>=1;//右移 } return count; } }
不過這兩個方法速度慢。