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

 

你可能感兴趣的:(check)