python演算法題-ccf 出現次數最多的數 python基礎解答
阿新 • • 發佈:2019-01-02
問題描述
試題編號: | 201312-1 |
試題名稱: | 出現次數最多的數 |
時間限制: | 1.0s |
記憶體限制: | 256.0MB |
問題描述: |
問題描述 給定n個正整數,找出它們中出現次數最多的數。如果這樣的數有多個,請輸出其中最小的一個。 輸入格式 輸入的第一行只有一個正整數n(1 ≤ n ≤ 1000),表示數字的個數。 輸出格式 輸出這n個次數中出現次數最多的數。如果這樣的數有多個,輸出其中最小的一個。 樣例輸入 6 樣例輸出 10 |
實現程式碼(初學時寫的,濃重的java習慣):
number_of_numbers = int(input()) temp = input() number_list = [int(n) for n in temp.split()] times_list = [] for i in range(0, number_of_numbers): time =0 for j in range(0, number_of_numbers): if number_list[i] == number_list[j]: time += 1 times_list.append(time) maxTime = 0 for i in range(0, number_of_numbers): if times_list[i] > maxTime: maxTime = times_list[i] flag=[] for i in range(0,number_of_numbers): if times_list[i] == maxTime: flag.append(i) if flag.__sizeof__() <= 1: print(number_list[flag[0]]) else: finalFlag = flag[0] for item in flag: if number_list[item] < number_list[finalFlag]: finalFlag = item print(number_list[finalFlag])
修改版(主要是語法精簡):
n = int(input()) number_list = list(map(int, input().split())) # 找尋每個數出現多少次 times_list = [] for item in number_list: time = 0 for item2 in number_list: if item == item2: time += 1 times_list.append(time) # 找到最大次數 maxTime = 0 for item in times_list: if item > maxTime: maxTime = item # 找到是最大次數值的下標,從而因為次數列表和數字列表對應,就找到了那個數字 flag = [] for item in times_list: if item == maxTime: flag.append(times_list.index(item)) if len(flag) <= 1: print(number_list[flag[0]]) else: # 出現多個最大次數 finalFlag = flag[0] for item in flag: if number_list[item] < number_list[finalFlag]: finalFlag = item print(number_list[finalFlag])