欢迎光临散文网 会员登陆 & 注册

Leetcode Day5 1

2022-04-05 15:22 作者:我喜欢喝一点点  | 我要投稿

每日一题ing,感觉可以用到昨天的lowbit就用了,不过真的太慢了。。。

给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。

计算置位位数 就是二进制表示中 1 的个数。

例如, 21 的二进制表示 10101 有 3 个计算置位。

 


class Solution:

    def countPrimeSetBits(self, left: int, right: int) -> int:

        def lowbit(self, x: int) -> int:

            return x & (-x)


        def calculate1(self, n: int) -> int:

            i = 0

            while n:

                n -= lowbit(self, n)

                i += 1

            return i


        def ifzhishu(self, n: int) -> bool:

            if n==1:return False

            for i in range(2, int(pow(n, 0.5))+1):

                if n % i == 0:

                    return False

            return True


        res = 0

        for i in range(left, right+1):

            tmp = calculate1(self, i)

            res1 = ifzhishu(self, tmp)

            if res1 == True: res += 1

        return res


总而言之没有调库,十分暴力……


大佬的话应该是调了个bit_count函数然后打表,十分迅捷了


暴力是不会带来快乐的.jpg

Leetcode Day5 1的评论 (共 条)

分享到微博请遵守国家法律