0326. Power of Three (E)

Power of Three (E)

题目

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:

  • -2^31 <= n <= 2^31 - 1

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


题意

判断一个整数是不是3的幂。

思路

比较直接的就迭代去除即可。

O(1)方法:在Integer范围内,3的最大幂是3^19=1162261467,且其因数只有3的幂次,那么只要n是1162261467的因数,则n一定是3的幂次。


代码实现

Java

迭代

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

        while (n > 1) {
            if (n % 3 != 0) return false;
            n /= 3;
        }

        return true;
    }
}

数学计算

class Solution {
    public boolean isPowerOfThree(int n) {
        return n > 0 && 1162261467 % n == 0;
    }
}
原文地址:https://www.cnblogs.com/mapoos/p/14709641.html