← Static tasks

326. Power of Three

leetcode easy

#csharp#easy#leetcode

Task

Дано целое число n. Верните true, если оно является степенью тройки, иначе верните false.

Целое число n является степенью тройки, если существует целое число x такое, что n == 3^x.

Пример

Input: n = 27

Output: true

Explanation: 27 = 3^3

C# solution

matched/original
public class Solution {
    public bool IsPowerOfThree(int n) {
        if (n <= 0) return false;
        while (n % 3 == 0) {
            n /= 3;
        }
        return n == 1;
    }
}

C++ solution

auto-draft, review before submit
#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 IsPowerOfThree(int n) {
        if (n <= 0) return false;
        while (n % 3 == 0) {
            n /= 3;
        }
        return n == 1;
    }
}

Java solution

matched/original
public class Solution {
    public boolean isPowerOfThree(int n) {
        if (n <= 0) return false;
        while (n % 3 == 0) {
            n /= 3;
        }
        return n == 1;
    }
}

JavaScript solution

matched/original
var isPowerOfThree = function(n) {
    if (n <= 0) return false;
    while (n % 3 === 0) {
        n = Math.floor(n / 3);
    }
    return n === 1;
};

Python solution

matched/original
class Solution:
    def isPowerOfThree(self, n: int) -> bool:
        if n <= 0:
            return False
        while n % 3 == 0:
            n //= 3
        return n == 1

Go solution

matched/original
func isPowerOfThree(n int) bool {
    if n <= 0 {
        return false
    }
    for n % 3 == 0 {
        n /= 3
    }
    return n == 1
}

Explanation

Algorithm

Проверка начального значения

Если n меньше или равно нулю, вернуть false, так как степени тройки всегда положительны.

Цикл деления на 3

Пока n делится на 3 без остатка, делите n на 3. Повторяйте этот процесс до тех пор, пока n делится на 3.

Проверка конечного значения

Если после всех делений значение n стало равно 1, значит исходное число является степенью тройки, вернуть true. В противном случае вернуть false.

😎