消消乐解法:
每当与之前一个相等 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;
}
京公网安备 11010502036488号