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之路的主要内容,如果未能解决你的问题,请参考以下文章

762. 二进制表示中质数个计算置位『简单』

LeetCode 744. 寻找比目标字母大的最小字母 / 307. 区域和检索 - 数组可修改 / 762. 二进制表示中质数个计算置位

leetcode 0214

二进制表示中质数个计算置位

762. Prime Number of Set Bits in Binary Representation二进制中有质数个1的数量

2021-10-22刷题总结