博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
326. Power of Three
阅读量:6147 次
发布时间:2019-06-21

本文共 890 字,大约阅读时间需要 2 分钟。

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?

解决方法:

1、Recursive Solution

public boolean isPowerOfThree(int n) {    return n>0 && (n==1 || (n%3==0 && isPowerOfThree(n/3)));}

2、Iterative Solution

public boolean isPowerOfThree(int n) {    if(n>1)        while(n%3==0) n /= 3;    return n==1;}

数学方法

1、找到3的n次方的最大整数,检查是否为输入的整数倍

public boolean isPowerOfThree(int n) {    int maxPowerOfThree = (int)Math.pow(3, (int)(Math.log(0x7fffffff) / Math.log(3)));    return n>0 && maxPowerOfThree%n==0;}

或者更简单一点,3的n次方的最大值maxPowerOfThree = 1162261467。

public boolean isPowerOfThree(int n) {    return n > 0 && (1162261467 % n == 0);}

2、log10(n) / log10(3)返回整数

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

reference

转载于:https://www.cnblogs.com/CarryPotMan/p/5343690.html

你可能感兴趣的文章
使用native 查询时,对特殊字符的处理。
查看>>
maclean liu的oracle学习经历--长篇连载
查看>>
ECSHOP调用指定分类的文章列表
查看>>
分享:动态库的链接和链接选项-L,-rpath-link,-rpath
查看>>
Javascript一些小细节
查看>>
禁用ViewState
查看>>
Android图片压缩(质量压缩和尺寸压缩)
查看>>
nilfs (a continuent snapshot file system) used with PostgreSQL
查看>>
【SICP练习】150 练习4.6
查看>>
HTTP缓存应用
查看>>
KubeEdge向左,K3S向右
查看>>
DTCC2013:基于网络监听数据库安全审计
查看>>
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>
linux/CentOS6忘记root密码解决办法
查看>>
25个常用的Linux iptables规则
查看>>
集中管理系统--puppet
查看>>
分布式事务最终一致性常用方案
查看>>