LeetCode简单题之二进制表示中质数个计算置位
題目
給你兩個整數 left 和 right ,在閉區間 [left, right] 范圍內,統計并返回 計算置位位數為質數 的整數個數。
計算置位位數 就是二進制表示中 1 的個數。
例如, 21 的二進制表示 10101 有 3 個計算置位。
示例 1:
輸入:left = 6, right = 10
輸出:4
解釋:
6 -> 110 (2 個計算置位,2 是質數)
7 -> 111 (3 個計算置位,3 是質數)
9 -> 1001 (2 個計算置位,2 是質數)
10-> 1010 (2 個計算置位,2 是質數)
共計 4 個計算置位為質數的數字。
示例 2:
輸入:left = 10, right = 15
輸出:5
解釋:
10 -> 1010 (2 個計算置位, 2 是質數)
11 -> 1011 (3 個計算置位, 3 是質數)
12 -> 1100 (2 個計算置位, 2 是質數)
13 -> 1101 (3 個計算置位, 3 是質數)
14 -> 1110 (3 個計算置位, 3 是質數)
15 -> 1111 (4 個計算置位, 4 不是質數)
共計 5 個計算置位為質數的數字。
提示:
1 <= left <= right <= 10^6
0 <= right - left <= 10^4
來源:力扣(LeetCode)
解題思路
??這道題可以直接模擬來運算,屬于直接翻譯類的題目。
class Solution:def countPrimeSetBits(self, left: int, right: int) -> int:def isPrime(x):if x<2:return Falsefor i in range(2,int(x**0.5)+1):if x%i==0:return Falsereturn Truecount=0for i in range(left,right+1):if isPrime(i.bit_count()):count+=1return count
總結
以上是生活随笔為你收集整理的LeetCode简单题之二进制表示中质数个计算置位的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之删除字符使字符串
- 下一篇: K近邻算法KNN