Lintcode: O(1) Check Power of 2
Using O(1) time to check whether an integer n is a power of 2. Example For n=4, return true For n=5, return false Challenge O(1) time Tags Expand
这道题考察bit manipulation. 1的个数只能有1个才是power of 2. 主要是要注意Integer.MIN_VALUE,这个只有一个1,但是是false
1 class Solution { 2 /* 3 * @param n: An integer 4 * @return: True or false 5 */ 6 public boolean checkPowerOf2(int n) { 7 // write your code here 8 boolean one = false; 9 for (int i=0; i<31; i++) { 10 if ((n>>>i & 1) == 0) continue; 11 else if (!one) one = true; 12 else return false; 13 } 14 if (one) return true; 15 else return false; 16 } 17 };