开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

leetCode 342. Power of Four 位运算

简介:
+关注继续查看

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?

题目大意:

判断一个数是否为4的幂。

思路:

要求不能使用循环和递归。所以必须使用位运算了。

因为4的幂肯定是2的幂,所以先将2的幂筛选一次,然后再筛选4的幂。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
    bool isPowerOfFour(int num) {
        if(num <= 0 )
            return false;
        if( ( (num)&(num-1) ) )//判断是否为2的幂
            return false;
            //0x55555555的二进制表示为
            //01010101010101010101010101010101
            //将目标数过滤出来
        if( ( (num) & (0x55555555) ) == num)
            return true;
        return false;
    }
};


位运算中对于寻找合适的 0x55555555 比较费劲。多加练习。

参考自:http://blog.csdn.net/liyuanbhu/article/details/51178795



本文转自313119992 51CTO博客,原文链接:http://blog.51cto.com/qiaopeng688/1837900

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
LeetCode每日一题题解:693. 交替位二进制数-题解-python && C++源代码-经典位运算
LeetCode每日一题题解:693. 交替位二进制数-题解-python && C++源代码-经典位运算
0 0
《LeetCode》位运算详解
《LeetCode》位运算详解
0 0
LeetCode 2032. 至少在两个数组中出现的值(哈希/位运算)
LeetCode 2032. 至少在两个数组中出现的值(哈希/位运算)
0 0
LeetCode通关:求次数有妙招,位运算三连
LeetCode通关:求次数有妙招,位运算三连
0 0
<LeetCode天梯>Day047 汉明距离(位运算+内置函数) | 初级算法 | Python
<LeetCode天梯>Day047 汉明距离(位运算+内置函数) | 初级算法 | Python
0 0
<LeetCode天梯>Day046 位1的个数(内置函数+位运算) | 初级算法 | Python
<LeetCode天梯>Day046 位1的个数(内置函数+位运算) | 初级算法 | Python
0 0
[LeetCode]--190. Reverse Bits(不是很懂的位运算)
补充知识,Java的位运算(bitwise operators) Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 96
1400 0
【LeetCode从零单排】No 191.Number of 1 Bits(考察位运算)
题目 Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight). For example, the 32-bit integer ’11' has binary representation 00000
561 0
代码随想录刷题|LeetCode 503.下一个更大元素II 42. 接雨水 84.柱状图中最大的矩形
代码随想录刷题|LeetCode 503.下一个更大元素II 42. 接雨水 84.柱状图中最大的矩形
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载