【Leetcode342】Power of Four

直接循环的做法就不说了

从二进制入手,很明显,对于4的幂,1只允许出现一次,而且是在偶数位上。操作上就是用1<<的方法就挨个获得该位置上的数,我的问题主要是:

判断条件我已开始写的:if(num & (1<<index)==1 )

这是错的,==优先级为9,&优先级为10,所以并不会如期望的那样先做&再做==,这个点错过很多次了。

class Solution {
public:
    bool isPowerOfFour(int num) {
        if(num == 0) return false;
        // while(num%4 == 0)
        //     num = num >> 2;
        // return num == 1;
        bool flag = false;
        for(size_t index = 0; index < 32; ++index){
            if(num & (1<<index)){
                if(index%2)
                    return false;
                else{
                    if(flag) 
                        return false;
                    flag = true;
                }
            }
        }
        return true;
    }
};
发布了112 篇原创文章 · 获赞 15 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_39458342/article/details/104832526
今日推荐