消消乐解法:
每当与之前一个相等 count++
每当与之前一个不等 count--
若当前count==0 那么新来的作为全新Num count=1
int main() { int n; cin>>n; vector<int> arr(n); for(int i=0;i<n;i++) cin>>arr[i]; //输入 int num=arr[0]; int ans=1; //假定那个数为arr[0] for(int i=1;i<n;i++) { if(ans==0) //转变新的num { num=arr[i]; ans++; continue; } if(arr[i]==num) { ans++; } else { ans--; } } int count=0; for(int i=0;i<n;i++) if(arr[i]==num) count++; if(count>n/2) cout<<num<<endl; else cout<<-1<<endl; }