326. Power of Three

326. Power of Three

这里写图片描述

自己写的:(java)

public class Solution {
    public boolean isPowerOfThree(int n) {
        double logarithm = Math.log10(n)/Math.log10(3);
        System.out.println(logarithm);
        if(logarithm == (int) logarithm){
            return true;
        }
        else {
            return false;
        }
    }
}

更简洁算法:
1、

public class Solution {
public boolean isPowerOfThree(int n) {
    // 1162261467 is 3^19,  3^20 is bigger than int  
    return ( n>0 &&  1162261467%n==0);
}

2、

public boolean isPowerOfThree(int n) {
    return (Math.log10(n) / Math.log10(3)) % 1 == 0;
}

3、

public boolean isPowerOfThree(int n) {
    return Integer.toString(n, 3).matches("10*");
}

要注意的问题:

使用log()函数是以e为底的,在n为243时会出现误差。log(243)/log(3) = 4.999999999999999。因此这里只能选择以10为底的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值