你的位置:首页 > Java教程

[Java教程]Lintcode: O Check Power of 2


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 };