0326. Power of Three

https://leetcode.com/problems/power-of-three

Description

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

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

Example 1:

**Input:** n = 27
**Output:** true

Example 2:

**Input:** n = 0
**Output:** false

Example 3:

**Input:** n = 9
**Output:** true

Example 4:

**Input:** n = 45
**Output:** false

Constraints:

  • -231 <= n <= 231 - 1

Follow up: Could you solve it without loops/recursion?

ac1: iterative

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

        return n == 1;
    }
}

ac2: trick

3^19 = 1162261467, the biggest number within Integer range. so n must <= 1162261467.

class Solution {
    public boolean isPowerOfThree(int n) {
        if (n <= 0) return false;
        return 1162261467 % n == 0;
    }
}

ac3: math

class Solution {
    public boolean isPowerOfThree(int n) {
        if (n <= 0) return false;

        return Math.log10(n) / Math.log10(3) % 1 == 0; // integer

    }
}

Last updated