📌  相关文章
📜  用于数组中最不频繁元素的Python程序

📅  最后修改于: 2022-05-13 01:54:36.701000             🧑  作者: Mango

用于数组中最不频繁元素的Python程序

给定一个数组,找出其中出现频率最低的元素。如果有多个元素出现次数最少,则打印其中任何一个。
例子 :

Input : arr[] = {1, 3, 2, 1, 2, 2, 3, 1}
Output : 3
3 appears minimum number of times in given
array.

Input : arr[] = {10, 20, 30}
Output : 10 or 20 or 30

一个简单的解决方案是运行两个循环。外循环一一挑选所有元素。内部循环找到拾取元素的频率并与迄今为止的最小值进行比较。该解决方案的时间复杂度为 O(n 2 )
更好的解决方案是进行排序。我们首先对数组进行排序,然后线性遍历数组。

Python3
# Python 3 program to find the least
# frequent element in an array.
  
  
def leastFrequent(arr, n) :
  
    # Sort the array
    arr.sort()
   
    # find the min frequency using
    # linear traversal
    min_count = n + 1
    res = -1
    curr_count = 1
    for i in range(1, n) :
        if (arr[i] == arr[i - 1]) :
            curr_count = curr_count + 1
        else :
            if (curr_count < min_count) :
                min_count = curr_count
                res = arr[i - 1]
              
            curr_count = 1
              
    
    # If last element is least frequent
    if (curr_count < min_count) :
        min_count = curr_count
        res = arr[n - 1]
      
    return res
      
   
# Driver program
arr = [1, 3, 2, 1, 2, 2, 3, 1]
n = len(arr)
print(leastFrequent(arr, n))
  
  
# This code is contributed
# by Nikita Tiwari.


Python3
# Python3 program to find the most 
# frequent element in an array.
import math as mt
  
def leastFrequent(arr, n):
  
    # Insert all elements in Hash.
    Hash = dict()
    for i in range(n):
        if arr[i] in Hash.keys():
            Hash[arr[i]] += 1
        else:
            Hash[arr[i]] = 1
  
    # find the max frequency
    min_count = n + 1
    res = -1
    for i in Hash: 
        if (min_count >= Hash[i]): 
            res = i
            min_count = Hash[i]
          
    return res
  
# Driver Code
arr = [1, 3, 2, 1, 2, 2, 3, 1] 
n = len(arr)
print(leastFrequent(arr, n))
  
# This code is contributed by
# mohit kumar 29


输出:
3

时间复杂度: O(n Log n)
辅助空间: O(1)
一个有效的解决方案是使用散列。我们创建一个哈希表并将元素及其频率计数存储为键值对。最后我们遍历哈希表并打印具有最小值的键。

Python3

# Python3 program to find the most 
# frequent element in an array.
import math as mt
  
def leastFrequent(arr, n):
  
    # Insert all elements in Hash.
    Hash = dict()
    for i in range(n):
        if arr[i] in Hash.keys():
            Hash[arr[i]] += 1
        else:
            Hash[arr[i]] = 1
  
    # find the max frequency
    min_count = n + 1
    res = -1
    for i in Hash: 
        if (min_count >= Hash[i]): 
            res = i
            min_count = Hash[i]
          
    return res
  
# Driver Code
arr = [1, 3, 2, 1, 2, 2, 3, 1] 
n = len(arr)
print(leastFrequent(arr, n))
  
# This code is contributed by
# mohit kumar 29
输出:
3

时间复杂度: O(n)
辅助空间: O(n)

有关更多详细信息,请参阅有关数组中最不频繁元素的完整文章!