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

Popular posts from this blog

Sum of Even Numbers till N

Find the Runner-Up Score!

Print All Substrings