leetcode解题报告-342. Power of Four
来源:互联网 发布:好看的字体软件 编辑:程序博客网 时间:2024/05/17 02:35
342. Power of Four
Given an integer (signed 32 bits), write a function to check whether it is a power of 4.
Example:
Given num = 16, return true. Given num = 5, return false.
Follow up: Could you solve it without loops/recursion?
思路1:
不停的除以4,直到商等于1,在此期间如果除以4的余数不为0,就返回false
注意:4^0=1,所以1要单独处理
class Solution {public: bool isPowerOfFour(int num) { if(num<=0) return false; if(num==1) return true; while(num!=1){ if(num%4!=0) return false; num=num/4; } return true; }};
思路2:
要判断是不是4的幂指数,那么只有以下情况:
所以只能有一位为1,而且1只能出现在奇数位上。那么先判断是否只有一位为1,如果是的话,判断1是否出现在奇数位上。时间复杂度为O(1)。
注意:判断只有1位为1可以利用a&(a-1)==0
但是这种思路依然会用到循环。在进一步思考,可以得到思路3
class Solution {public: bool isPowerOfFour(int num) { if(num<=0) return false; if((num&(num-1))==0){ //判断是否只有一位为1 int index=0; while(index<=30){ if((num>>index)&1) return true; index+=2; } return false; } else return false; }};
思路3
一个数 num 如果是 4 的 N 次方必然也是 2 的 N 次方。所以可以先判断 num 是否是 2 的 N 次方(也就是只有一位为1)。然后再将 2 的 N 次方中那些不是 4 的 N 次方的数去掉。因此就有了下面的代码。
class Solution {public: bool isPowerOfFour(int num) { if(num<=0) return false; if((num&(num-1))==0){ if(num&0x55555555) return true; else return false; } else return false; }};
阅读全文
0 0
- [leetcode] 342. Power of Four 解题报告
- leetcode 342. Power of Four 解题报告
- leetcode解题报告-342. Power of Four
- [Leetcode] 342. Power of Four 解题报告
- 【LeetCode】Power of Four 解题报告
- LeetCode *** 342. Power of Four
- LeetCode -- 342. Power of Four
- LeetCode-342. Power of Four
- LeetCode 342. Power of Four
- [leetcode] 342. Power of Four
- leetcode-342. Power of Four
- LeetCode.342. Power of Four
- LeetCode 342. Power of Four
- leetcode 342. Power of Four
- 342.[leetcode]Power of four
- leetcode 342. Power of Four
- LeetCode-342.Power of Four
- 【leetcode】342. Power of Four
- 函数重载
- Java通过Socket实现UDP编程及Socket总结
- swift面向协议编程
- Window 窗口层次关系
- python入门_简介
- leetcode解题报告-342. Power of Four
- 九大排序之——堆排序
- Android酷炫实用的开源框架(UI框架)
- 数据结构——二叉树的链式存储
- php试题收集2
- Mac 修改mysql初始密码
- 优质 github
- android权限大全
- response.getWriter().write()与out.print()的区别