Find majority element(occurs more than n/3 times)
#include <iostream>
using namespace std;
int main() {
int n=8;
int arr[8]={2,2,1,1,3,2,1,3};
int a=(n/3);
int element1=arr[0];
int element2=0;
int e1c=1;
int e2c=0;
for(int i=1;i<n;i++){
if(arr[i]==element1){
e1c++;
}
else if(arr[i]==element2){
e2c++;
}
else if(e1c==0){
element1=arr[i];
}
else if(e2c==0){
element2=arr[i];
}
else{
e1c--;
e2c--;
}
}
int count1=0,count2=0;
for(int i=0;i<n;i++){
if(element1==arr[i]){
count1++;
}
if(element2==arr[i]){
count2++;
}
}
if(count1>a){
cout<<element1;
}
cout<<" ";
if(count2>a){
cout<<element2;
}
return 0;
}
Comments
Post a Comment