LeetCode 762 二进制表示中质数个计算置位[位运算] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 762 二进制表示中质数个计算置位[位运算] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
首先分析题目,由于int型表示的范围有限,所以一下子就可以把所有能够表示的质数全部取出,放入set中,接着就是统计区间中每个数二进制1的个数,这里有个函数,__builtin_popcount()
,它可以直接计算出每个数二进制1的个数,获取后在set中寻找,有就ans++,代码如下:
class Solution
private:
unordered_set<int> prime = 2, 3, 5, 7, 11, 13, 17, 19;
public:
int countPrimeSetBits(int left, int right)
int ans = 0;
for(int i = left; i <= right; i ++)
int num = __builtin_popcount(i);
if(prime.count(num)) ans ++;
return ans;
;
以上是关于LeetCode 762 二进制表示中质数个计算置位[位运算] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 744. 寻找比目标字母大的最小字母 / 307. 区域和检索 - 数组可修改 / 762. 二进制表示中质数个计算置位
762. Prime Number of Set Bits in Binary Representation二进制中有质数个1的数量