1. 程式人生 > >出現次數最多的數C++

出現次數最多的數C++

試題名稱:出現次數最多的數。
問題描述:給定n個正整數,找出它們中出現次數最多的數。如果這樣的數有多個,請輸出其中最小的一個。
輸入格式:輸入的第一行只有一個正整數n(1<=n<=1000),表示數字的個數。輸入的第二行n個整數,相鄰的數用空格分開。
輸出格式:輸出這n個數中出現次數最多的數。如果這樣的數有多個,輸出其中最小的一個。
樣例輸入:6 10 1 10 20 30 20
樣例輸出:10

#include<iostream>
#include<vector>
#include<algorithm>//sort排序函式要用到

using namespace
std; struct choosen{ int count;//出現的次數 int value;//值 };//記錄某一值出現的次數 int choose(vector<int>& L1); int main(){ int i; cin>>i; vector<int> L1(i); for(int j=0;j<i;j++) cin>>L1.at(j); int answer=choose(L1); cout<<answer<<endl; return
0; } int choose(vector<int>& L1){ sort(L1.begin(),L1.end());//對L1按從小到大進行排序 choosen T1,T2;//T1用來儲存最終結果,T2用來儲存中間結果 T1.count=0; T1.value=0;//T1初始化 T2.count=1; T2.value=L1.front();//T2初始化,從第一個元素開始 for(int i=0;i<L1.size()-1;i++){ if(L1.at(i)==L1.at(i+1))//若相等則次數加一 T2.count++; else
{//如不等則更新T2,而且當前次數大於儲存的次數時更新T1 if(T2.count>T1.count) T1=T2; T2.count=1; T2.value=L1.at(i+1); } } if(T2.count>T1.count)//最後還需更新一次 T1=T2; return T1.value; }

主要思路:使用vector容器來儲存輸入的值,對其進行排序。按順序對該容器進行訪問,使用choosen結構體來儲存最終結果。