【第22期】观点:IT 行业加班,到底有没有价值?

[leetcode-342]Power of Four(java)

原创 2016年06月01日 10:22:52

原题链接: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;
    }
}
版权声明: 举报

相关文章推荐

[LeetCode]231.Power of Two

题目 Given an integer, write a function to determine if it is a power of two. 代码 /*--------------------------------------- * 日期:2015-08-0

leetcode 342. Power of Four

Given an integer (signed 32 bits), write a function to check whether it is a power of 4. Example: G...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Gang of Four

[url]http://bp3.blogger.com/_WJ-tM2mlUO4/RsWyPxn1QEI/AAAAAAAAADs/jC1BG2j2K14/s1600-h/Gang_of_Four.jpg[/url]

LeetCode - 231/326/342 - Power of Two/Three/Four

231. Power of Two Given an integer, write a function to determine if it is a power of two. 判断一个数是不...

[leetcode]Minimum Depth of Binary Tree-java 广度遍历

/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tre...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)