题意:给定N个数,选出其中数量大于(N+1)/2的数
两种方法实现,第一种方法排序,选择中间的那个数。第二种方法搜一遍。
#include <iostream> #include <algorithm> #include <cstring> #include <cstdlib> #include <cstdio> using namespace std; int a[1024000]; int main() { int n; while(cin >> n){ for(int i = 0; i < n; ++i) cin >> a[i]; sort(a, a + n); cout << a[(n-1)/2] << endl; } return 0; }
#include <iostream> #include <algorithm> #include <cstring> #include <cstdlib> #include <cstdio> using namespace std; int main() { int n; while(cin >> n){ int maxx = 0, cnt = 0; for(int i = 0; i < n; ++i){ int t; cin >> t; if(!cnt){ maxx = t; ++cnt; }else{ if(t == maxx) ++cnt; else --cnt; } } cout << maxx << endl; } return 0; }