一. 题目
-
题目
-
示例
二. 方法一: 按部就班
-
解题思路
-
解题代码
def isPrime(self, num: int): if num == 1: return False for i in range(2, int(math.sqrt(num)) + 1): if num % i == 0: return False return True def countPrimeSetBits(self, L: int, R: int) -> int: count = 0 for ele in range(L, R + 1): temp = bin(ele) size = temp.count("1") if self.isPrime(size): count += 1 return count
-
分析
时间复杂度: O(nlogn)
空间复杂度: O(1)
三. 方法二
-
解题思路
-
解题代码
def countPrimeSetBits(self, L: int, R: int) -> int: arr = {2, 3, 5, 7, 11, 13, 17, 19} count = 0 for ele in range(L, R + 1): bin_num = bin(ele) size = bin_num.count("1") if size in arr: count += 1 return count
-
分析
时间复杂度: O(n)
空间复杂度: O(1)