Question

Formatted question description: https://leetcode.ca/all/231.html

 231	Power of Two

 Given an integer, write a function to determine if it is a power of two.

 Example 1:

 Input: 1
 Output: true
 Explanation: 2^0 = 1

 Example 2:

 Input: 16
 Output: true
 Explanation: 2^4 = 16

 Example 3:

 Input: 218
 Output: false

Algorithm

Observe the characteristics of the binary notation of the power of 2:

1   2   4       8       16   ....

1   10  100     1000    10000 ...

The power of 2 has only one 1, and the rest is 0s, so our problem-solving idea is to determine whether the lowest bit is 1 each time, then shift to the right, and finally count the number of 1s to determine whether it is Power of 2

Code

Java

  • 
    public class Power_of_Two {
    
    
        class Solution {
            public boolean isPowerOfTwo(int n) {
                int cnt = 0;
                while (n > 0) {
                    cnt += (n & 1);
                    n >>= 1;
                }
                return cnt == 1;
    
            }
        }
    }
    
  • // OJ: https://leetcode.com/problems/power-of-two/
    // Time: O(1)
    // Space: O(1)
    class Solution {
    public:
        bool isPowerOfTwo(int n) {
            if (n <= 0) return false;
            while ((n & 1) == 0) n >>= 1;
            return n == 1;
        }
    };
    
  • class Solution(object):
      def isPowerOfTwo(self, n):
        """
        :type n: int
        :rtype: bool
        """
        return n != 0 and (n & -n) == n
    
    

All Problems

All Solutions