Post

Leetcode 0231. Power of Two

Given an integer `n`, return `true` if it is a power of two. Otherwise, return `false`. An integer `n` is a power of two, if there exists an integer `x` such that `n == 2x`.  Example 1:  Input: n = 1, Output: true  - 2^0 = 1 

Description

Given an integer n, return true if it is a power of two. Otherwise, return false.

An integer n is a power of two, if there exists an integer x such that n == 2x.

Example 1:

Input: n = 1
Output: true

  • 2^0 = 1

Example 2:

Input: n = 16
Output: true

  • 2^4 = 16

Example 3:

Input: n = 3
Output: false

Constraints:

  • -231 <= n <= 231 - 1

Follow up

  • Could you solve it without loops/recursion?

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
  /**
   * Iteration
   * Time Complexity: BigO(log n)
   * Space Complexity: BigO(1)
   */
  public boolean isPowerOfTwo(int n) {
    if (n == 0)
      return false;

    while (n != 1) {
      if (n % 2 != 0)
        return false;
      n = n / 2;
    }
    return true;
  }
}
This post is licensed under CC BY 4.0 by the author.