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

本文共 839 字,大约阅读时间需要 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:利用递归函数解决问题,如果n<=0,返回false。如果n==1,返回true。如果n能够被3整除,用n/3递归调用函数。否则,说明n不能被3整除,自然不可能是3的幂,返回false。

class Solution {public:    bool isPowerOfThree(int n) {        if(n<=0)            return false;        if(n==1)            return true;        if(n%3==0)            return isPowerOfThree(n/3);        return false;                }};
思路2:利用log函数,如果log3(n)为整数,那么说明n为3的幂。但是,利用log函数会出现四舍五入的问题,这是由精度造成的。我们可以采取特殊措施,判断n是否等于3的log3(n)次方,为了规避round off error,我们取pow(3,round(log3(n))),round函数对计算出来的log3(n)做了四舍五入。
class Solution {public:    bool isPowerOfThree(int n) {        if(n<1)            return false;        return n==pow(3,round(log(n)/log(3)));    }};

 

 

转载于:https://www.cnblogs.com/zhoudayang/p/5126842.html

你可能感兴趣的文章
day22 01 初识面向对象----简单的人狗大战小游戏
查看>>
mybatis源代码分析:深入了解mybatis延迟加载机制
查看>>
Flask三剑客
查看>>
Hibernate-缓存
查看>>
【BZOJ4516】生成魔咒(后缀自动机)
查看>>
提高PHP性能的10条建议
查看>>
svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法...
查看>>
熟用TableView
查看>>
Java大数——a^b + b^a
查看>>
poj 3164 最小树形图(朱刘算法)
查看>>
服务器内存泄露 , 重启后恢复问题解决方案
查看>>
android一些细节问题
查看>>
KDESVN中commit时出现containing working copy admin area is missing错误提示
查看>>
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
boost 同步定时器
查看>>
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>
简单的数据库操作
查看>>