用于数组中最不频繁元素的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)
有关更多详细信息,请参阅有关数组中最不频繁元素的完整文章!