326. Power of Three
2016-02-13 13:30
302 查看
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?
2、Iterative Solution
或者更简单一点,3的n次方的最大值maxPowerOfThree = 1162261467。
2、log10(n) / log10(3)返回整数
reference
https://leetcode.com/discuss/78532/summary-all-solutions-new-method-included-at-15-30pm-jan-8th
Follow up:
Could you do it without using any loop / recursion?
解决方法:
1、Recursive Solutionpublic 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://leetcode.com/discuss/78532/summary-all-solutions-new-method-included-at-15-30pm-jan-8th
相关文章推荐
- struts2 工作原理(仅图片说明)
- [leetcode] 56. Merge Intervals 解题报告
- jdbc连接数据库一方法
- hdu 5299 Circles Game
- 无线网卡驱动
- uva1368 - DNA Consensus String
- CDOJ 1268 Open the lightings
- Light OJ 1170 Counting Perfect BST (DP+数学)
- js替换指定字符串
- 299. Bulls and Cows
- 杭电1896 Stones(优先队列)
- 关于Runloop 补充-1(相关文档)
- 《IP地址介绍及为linux配置IP地址》
- 杭电1000:A + B Problem
- 此windows Installer 程序包有问题。完成此安装所需的一个DLL不能运行。请和...
- 【转载】VC中如何调用其他的可执行程序
- uva1339 - Ancient Cipher
- 03环信好友管理 - 获取好友列表
- 2016蓝桥杯算法训练——最大最小公倍数
- Building Maintainable Software-java篇之Keep Unit Interfaces Small