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

posted @ 2016-01-08 22:32  Dylan_Java_NYC  阅读(294)  评论(0编辑  收藏  举报