Using O(1) time to check whether an integer n is a power of 2.ExampleFor n=4, return trueFor n=5, return falseChallengeO(1) timeTags 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 };
新闻热点
疑难解答