326. 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 Explanation: 27 = 33
Example 2:
Input: n = 0 Output: false Explanation: There is no x where 3x = 0.
Example 3:
Input: n = -1 Output: false Explanation: There is no x where 3x = (-1).
Constraints:
-231 <= n <= 231 - 1
Follow up: Could you solve it without loops/recursion?
Solutions
Solution 1: Trial Division
If \(n \gt 2\), we can continuously divide \(n\) by \(3\). If it's not divisible, it means \(n\) is not a power of \(3\), otherwise we continue dividing by \(3\) until \(n\) is less than or equal to \(2\). If \(n\) equals \(1\), it means \(n\) is a power of \(3\), otherwise it's not a power of \(3\).
Time complexity \(O(\log_3n)\), space complexity \(O(1)\).
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Solution 2: Mathematics
If \(n\) is a power of \(3\), then the maximum value of \(n\) is \(3^{19} = 1162261467\). Therefore, we only need to check if \(n\) is a divisor of \(3^{19}\).
Time complexity \(O(1)\), space complexity \(O(1)\).
1 2 3 |
|
1 2 3 4 5 |
|
1 2 3 4 5 6 |
|
1 2 3 |
|
1 2 3 |
|
1 2 3 4 5 |
|
1 2 3 4 5 6 7 |
|