您的位置:首页 > 编程语言 > Java开发

[leetcode-342]Power of Four(java)

2016-06-01 10:22 507 查看
原题链接:https://leetcode.com/problems/power-of-four/

思路:首先判断是否是2的幂,如果是的话,再去判断是否为4的幂,判断2的幂要求整数的bit位中只有一个1,而这可以根据num & (num -1)来判断。

得到结果后,最佳的方案是能找到1后面有多少个0,然后这个个数对2取余,如果为0,表示可以整除。但是我没找到方法。

public class Solution {
public boolean isPowerOfFour(int num) {
if(num < 0)
return false;
int tmp = num-1;
if((tmp & num) == 0){
while(num != 0 && num != 1){
num = num >> 2;
}
if(num == 1)
return true;
}
return false;
}
}


2、在网上看到了一种做法:思想是如果一个数为4的倍数,那么这个数-1一定可以被3整除,可以用数学归纳法很容易得到证明。

public class Solution {
public boolean isPowerOfFour(int num) {
if(num < 0)
return false;
int tmp = num-1;
return (num & tmp) == 0 && tmp % 3 == 0;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: