LeetCode 326. Power of Three
原题链接在这里:https://leetcode.com/problems/power-of-three/
题目:
Given an integer, write a function to determine if it is a power of three.
Example 1:
Input: 27 Output: true
Example 2:
Input: 0 Output: false
Example 3:
Input: 9 Output: true
Example 4:
Input: 45 Output: false
Follow up:
Could you do it without using any loop / recursion?
题解:
检查能否被3整除,然后整除,看能否一直除到1.
Time Complexity: O(logn).
Space: O(1).
AC Java:
1 public class Solution { 2 public boolean isPowerOfThree(int n) { 3 if(n<=0){ 4 return false; 5 } 6 while(n%3 == 0){ 7 n /= 3; 8 } 9 return n==1; 10 } 11 }
Follow up 不用 loop. 整数范围内最大的3的幂数, 3^19 = 1162261467能否被n整除.
Time Complexity: O(1). Space: O(1).
AC Java:
1 public class Solution { 2 public boolean isPowerOfThree(int n) { 3 return n>0 && 1162261467%n==0; 4 } 5 }
类似Power of Two.