LeetCode Algorithms #326 <Power of Three>
2016-02-23 18:39
441 查看
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?
思路:
递归的很好做,就是在每次调用的时候看能不能被3整除,不能直接返回false,能的话继续除以3,直到最后结果是1(3/3)或者0(2/3, 1/3)——其实还是看能不能整除。
非递归的话,就是看log3(n)是不是个整数。看一个数是不是整数只要强转成int,再转回float或double然后和原来的数比较就好。这里因为没有log3()这个函数,所以依照换底公式,用log10(n)/log10(3) 来做。记得不能使用log()函数,因为e本身就是个无限不循环小数,会发生精度问题。
解:
Follow up:
Could you do it without using any loop / recursion?
思路:
递归的很好做,就是在每次调用的时候看能不能被3整除,不能直接返回false,能的话继续除以3,直到最后结果是1(3/3)或者0(2/3, 1/3)——其实还是看能不能整除。
非递归的话,就是看log3(n)是不是个整数。看一个数是不是整数只要强转成int,再转回float或double然后和原来的数比较就好。这里因为没有log3()这个函数,所以依照换底公式,用log10(n)/log10(3) 来做。记得不能使用log()函数,因为e本身就是个无限不循环小数,会发生精度问题。
解:
//递归 class Solution { public: bool isPowerOfThree(int n) { if(n == 0) return false; else if(n == 1) return true; if(n % 3 == 0) return isPowerOfThree(n/3); else return false; } }; //非递归 class Solution { public: bool isPowerOfThree(int n) { return ((double)(int)(log10(n)/log10(3)) == (log10(n)/log10(3))) ? true: false; } };
相关文章推荐
- Category的主要知识点
- 使用google&nbsp;Adwords&nbsp;业务要谨慎
- (GOF23设计模式)_单例模式_应用场景_饿汉式_懒汉式
- Django学习笔记
- POJ 1042 Gone Fishing#贪心
- [Google EarlGrey] 0x01 第一个测试用例
- google api 生成二维码
- logo
- Ubuntu下安装Go语言开发环境及编辑器的相关配置
- 《Thinking In Algorithm》09.彻底理解递归
- golang fatal error: all goroutines are asleep - deadlock!
- [golang note] 流程控制
- 关于AdMob广告设置adView.setVisibility(View.GONE)隐藏无效的解决办法
- Django学习随手记(三)
- Google IAP 常见错误,产生原因及解决办法
- POJ 2940 Wine Trading in Gergovia(简单贪心)
- Django学习随手记(二)
- Ubuntu 15.04 安装google protobuf步骤
- [Google EarlGrey] 0x00 安装及运行
- kruskal's algorithm.[克鲁斯卡尔算法]