首页 > 其他 > 详细

LeetCode -- Power of Three

时间:2016-02-13 11:07:00      阅读:268      评论:0      收藏:0      [点我收藏+]

Question:

Given an integer, write a function to determine if it is a power of three.

Follow up:
Could you do it without using any loop / recursion?

 

Analysis:

给出一个整数,写一个函数判断它是否是3的n次幂。

注意:能否不用循环或递归解决这个问题?

 

Solution1: Using Loop.

//Solution1: Loop
public boolean isPowerOfThree(int n) {
         if(n <= 0)
             return false;
         while(n > 1) {
             if(n % 3 != 0)
                 break;
             else 
                 n /= 3;
         }
         return n == 1;
}

 

Solution2: Using Recursion.

//Solution2: Recursion.
public static boolean isPowerOfThree(int n) {
         if(n <= 0)
             return false;
         if(n == 1)
             return true;
         if(n % 3 == 0)
             return isPowerOfThree(n/3);
         else return false;
}

 

Solution3: Using Log Function. (logab = logcb / logca)

    public boolean isPowerOfThree(int n) {
        if(n <= 0)
             return false;
         double log = Math.log10(n) / Math.log10(3);
         if(log - (int)log == 0)
             return true;
         else return false;
    }

 

LeetCode -- Power of Three

原文:http://www.cnblogs.com/little-YTMM/p/5187462.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!