Python 中的多數元素


假設我們有一個整數陣列。任務是在給定陣列中找到特定元素的索引。例如,

輸入 1

N = 8 A[ ] = { 1,2,4,3,3,1,1,5}

輸出

1

解釋 − 在給定的整數陣列中,出現次數最多的數字是“1”。因此輸出為“1”。

輸入 2

N = 6 A[ ] = {1,5,4,4,1,1}

輸出

1

解釋 − 在給定的整數陣列中,出現次數最多的數字是“1”。因此我們可以返回輸出“1”。

解決此問題的方法

給定陣列包含多個整數,我們必須在其中找到陣列中出現頻率最高的元素。為了線上性時間 O(n) 和線性空間 O(n) 中解決此問題,我們可以使用雜湊對映的方法。

在這種方法中,我們將建立一個無序對映(STL 庫),其中包含鍵值對,其中鍵將是元素,值將是元素的出現次數。在遍歷對映時,我們將找到數字的最大出現次數並返回該數字作為輸出。

  • 輸入大小為 N 的陣列

  • 整數函式 maxOccurrence(int A[], int size) 以陣列及其大小作為輸入,並返回頻率最高的數字。

  • 透過將鍵作為元素並將值作為其頻率來建立陣列所有元素的雜湊對映。

  • 遍歷對映並檢查是否有任何元素具有最高頻率,然後將結果作為數字返回。否則,如果陣列中不存在任何數字,則返回“-1”。

示例

 線上演示

def checkMajorityElement(arr, N):
   mp = {}
   for i in range(0, N):
      if arr[i] in mp.keys():
         mp[arr[i]] += 1
      else:
         mp[arr[i]] = 1
   for key in mp:
      if mp[key] > (N / 2):
         return key
   return -1
print("Enter size of array:")
N = int(6)
print("Enter elements of array:")
arr = [2,1,1,2,2,2]
ans = checkMajorityElement(arr, N)
if ans != -1:
   print("Majority Element is: %d" % ans)
else:
   print("No majority element in array")

輸出

執行以上程式碼將生成以下輸出:

Enter size of array: 6
Enter elements of array: 2 1 1 2 2 2
Majority Element is: 2

更新於:2021 年 2 月 5 日

2K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.