leetcode-3591.频数为质数

651 词

本题采用双循环解决数组出现频数是质数

image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution:

    def is_prime(self, n: int) -> bool:
        if n < 2:
            return False
        for i in range(2, int(math.sqrt(n)) + 1):
            if n % i == 0:
                return False
        return True
       
    def checkPrimeFrequency(self, nums: List[int]) -> bool:
        visited = set()
        for i in range (len(nums)):
            a=nums[i]
            if a in visited:
                continue
            visited.add(a)
            count = 1
            for j in range(i+1,len(nums)):
                if a ==nums[j]:
                    count+=1
            if self.is_prime(count):
                return True
        return False

本题解析:

主要考察数组中出现的次数是否为质数,质数返回true,否则返回false

第一步判断一个数是否为质数,函数可以这样写:

  1. 小于2的都不是质数返回false
  2. 利用数学公式一个数假设是n只用i从2开始检验到就可以判断它是否是质数,如果除得尽就不是质数。

第二步用两个循环来遍历数组,一个负责记录当前记录的数组,另一个负责记录出现的频数。注意重复出现的数组就不要再统计了,用集合来记录已经出现过的元素,一旦遇到重复的就直接跳过循环,到下一个数组。