231. Power of Two

 

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

 

231. Степень двойки

 

Задано целое число. Определите, является ли оно степенью двойки.

 

// C++

class Solution {

public:

  bool isPowerOfTwo(int n) {

       

  }

};

 

// Java

public class Solution {

  public boolean isPowerOfTwo(int n) {

       

  }

}

 

РЕШЕНИЕ

математика

 

Анализ алгоритма

Если n = 0, то оно не является степенью двойки.

Иначе делим n на 2, пока n является четным. Если в конце n становится равным 1, то исходное число было степенью двойки. Иначе – нет.

 

Реализация алгоритма

 

class Solution

{

public:

  bool isPowerOfTwo(int n)

  {

    if (n == 0) return false;

    while(n % 2 == 0)

      n /= 2;

    return (n == 1);

  }

};

 

Java реализация

 

class Solution

{

  public boolean isPowerOfTwo(int n)

  {

    if (n == 0) return false;

    while(n % 2 == 0)

      n /= 2;

    return (n == 1);

  }

}