leetcode[Power of Four]
来源:互联网 发布:深夜前的五分钟 知乎 编辑:程序博客网 时间:2024/06/05 21:14
思路类似于[Power of Three]
这里对于用3^19 % num == 0来判断不适用,这种只适用于判断一个数是否为n的幂(n为质数)
举个范例,4^15 % 2等于0,但是2不是4的幂,原因就在于4不是质数
解法一:
public class Solution { public boolean isPowerOfFour(int num) { HashSet<Integer> set = new HashSet<>(Arrays.asList(1, 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864, 268435456,1073741824)); return set.contains(num); }}
解法二:
public class Solution { public boolean isPowerOfFour(int num) { if(num <= 0) return false;//非正数单独处理,因为用对数算log(n),n必须大于0 //这里如果是4的幂,那么一定是2的幂,不会有log2(num)不会有小数产生 //直接用差值是否>0来判断即可,不用考虑误差的0.0000...1 if(Math.abs(Math.log(num) / Math.log(4) - Math.ceil(Math.log(num) / Math.log(4))) > 0){ return false; } else{ return true; } }}
解法三:
public class Solution { public boolean isPowerOfFour(int num) { //1 0 //4 100 //16 10000 //64 1000000 //观察规律可知,可以用二进制来处理(与数据有关的多半想到二进制,位运算来解决) //First, Any number passes "n & (n-1)==0" must be powers of 2. //Second, all numbers above could be further categorized to 2 class. //A: all numbers that are 2^(2k+1) and B: all numbers that 2^(2k). //Third, we could show that 2^(2k+1)-1 could not pass the test of (n-1)%3==0.(证明见下一行) // 4^(n+1) - 1 = 4*4^n -1 = 3*4^n + 4^n-1. //The first is divided by 3, the second is proven by induction hypothesis //So all A are ruled out, leaving only B, which is power of 4. return num > 0 && (num & (num - 1)) == 0 && (num - 1) % 3 == 0; }}
阅读全文
0 0
- [LeetCode]Power of Four
- Power of Four-Leetcode
- LeetCode Power of Four
- LeetCode - Power of Four
- LeetCode:Power of Four
- leetcode---Power of Four
- [LeetCode] Power of Four
- 【Leetcode】Power of Four
- [Leetcode]Power of Four
- LeetCode: Power of Four
- LeetCode Power of Four
- [Leetcode] Power of Four
- LEETCODE-- Power of Four
- leetcode[Power of Four]
- leetcode笔记:Power of Four
- LeetCode *** 342. Power of Four
- (LeetCode 342) Power of Four
- LeetCode(65)-Power of Four
- Codeforces Round #218 (Div. 2) E. Subway Innovation(思维 前缀和)
- React Native unable to load script from assets index.android.bundle on windows
- smartctl
- 初学数据库
- Python3随机数与随机字符串详解
- leetcode[Power of Four]
- 工程师必备,最好的九张机器学习&深度学习代码速查表
- 软件开发过程模型
- 洛谷 P1869 愚蠢的组合数
- 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行
- 关于跨域
- 【Glance】glanceclient学习
- 解决viewpager与自定义view滑动冲突的问题
- 微信实战记录