231. Power of Two

LeetCode easy original: C# #bit-manipulation #csharp #easy #leetcode
Der Aufgabentext wird für die gewählte Sprache aus dem Russischen übersetzt. Code bleibt unverändert.

given Ganzzahl n, return true, если оно является степенью двойки. В противном случае return false.

Ganzzahl n является степенью двойки, если существует Ganzzahl x, такое что n == 2^x.

Beispiel

Input: n = 1

Output: true

Explanation: 2^0 = 1

C# Lösung

zugeordnet/original
public class Solution {
    public bool IsPowerOfTwo(int n) {
        if (n == 0) return false;
        long x = n;
        return (x & (-x)) == x;
    }
}

C++ Lösung

Auto-Entwurf, vor dem Einreichen prüfen
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public bool IsPowerOfTwo(int n) {
        if (n == 0) return false;
        long x = n;
        return (x & (-x)) == x;
    }
}

Java Lösung

zugeordnet/original
class Solution {
    public boolean isPowerOfTwo(int n) {
        if (n == 0) return false;
        long x = n;
        return (x & -x) == x;
    }
}

JavaScript Lösung

zugeordnet/original
class Solution {
    isPowerOfTwo(n) {
        if (n === 0) return false
        let x = BigInt(n)
        return (x & -x) === x
    }
}

Python Lösung

zugeordnet/original
class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        if n == 0:
            return False
        return (n & -n) == n

Go Lösung

zugeordnet/original
func isPowerOfTwo(n int) bool {
    if n == 0 {
        return false
    }
    x := int64(n)
    return (x & -x) == x
}

Algorithm

Проверка на ноль: Если n равно нулю, return false, так как ноль не является степенью двойки.

Преобразование к длинному типу: Преобразуйте n к типу long, чтобы избежать переполнения при выполнении побитовых операций.

Побитовая проверка: Используйте побитовую операцию, чтобы проверить, является ли number степенью двойки. number является степенью двойки, если результат выражения (x & (-x)) равен x.

😎

Stellen zu dieser Aufgabe

aktive Stellen with overlapping task tags are angezeigt.

Alle Stellen
Es gibt noch keine aktiven Stellen.