b374: 求眾數
這篇教學會示範 ZeroJudge 基礎題庫「b374: [福州19中]眾數」的解題過程。
題目需求
題目會提供一萬個以內的數字,數字範圍為 1~30000,透過程式求出這些數字的眾數 ( 出現最多次的數字 ),並列出眾數出現的次數。
題目連結:b374: [福州19中]眾數
解答
這題可以使用 Python collections 標準函式庫裡的 Counter 方法求出每個數字出現的次數,接著只要抓出最多次的數字,再透過排序,就能得到最後的結果。
from collections import Counter # 載入 collections 函式庫的 Counter
while True:
try:
n = int(input()) # 有幾個數字
num = [int(i) for i in input().split()] # 將輸入的文字轉換成數字串列
a = Counter(num) # 計算每個數字出現的次數,轉成字典的型態
b, c = [], [] # 建立兩個空串列,記錄數字以及排序使用
for key in a:
b.append(a[key]) # 將所有的次數存入串列中
m = max(b) # 取出數字裡的最大值 ( 眾數的次數 )
for key in a:
if a[key] == m: # 如果該數字的次數等於最大值
c.append(key) # 將該數字存入 c 串列
c.sort() # 排序
for i in c:
print(f'{i} {m}') # 印出結果
except:
break
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~