Einfach 0 gelöst 0% Erfolgsquote

Power of Two

Check whether a number is a power of two.

Das lernst du

  • Check powers of two by repeated halving
  • Use the n & (n - 1) bit trick
  • Handle zero and negative numbers

Problem

Übersetzung anzeigen

Decide whether n equals 2ᵏ for some whole number k ≥ 0 (1, 2, 4, 8, …).

Implement is_power_of_two(n).

Input

n: The number to check.

Output

Return true if n is a power of two.

Einschränkungen

-10¹⁸ ≤ n ≤ 10¹⁸

Beispiele

Beispiel 1
Eingabe:
n = 64

Erwartete Ausgabe:
expected = True
Eingabe:
long long n = 64;

Erwartete Ausgabe:
bool expected = true;
Eingabe:
long n = 64;

Erwartete Ausgabe:
bool expected = true;

Erläuterung

64 = 2⁶.

Beispiel 2
Eingabe:
n = 12

Erwartete Ausgabe:
expected = False
Eingabe:
long long n = 12;

Erwartete Ausgabe:
bool expected = false;
Eingabe:
long n = 12;

Erwartete Ausgabe:
bool expected = false;

Erläuterung

12 = 4 × 3 has an odd factor, so it is not a power of two.

So gehst du vor

Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.

Hinweis 1

A power of two has exactly one bit set in binary.

Hinweis 2

Check that the number is positive before using a bit-based test.

Hinweis 3

Negative numbers and zero are never powers of two.

Erwartete Komplexität

O(1) time, O(1) extra space

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.