Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋
times.
You may assume that the array is non-empty and the majority element always exist in the array.
class Solution { public: int majorityElement(vector<int> &num) { int n=num.size(); int res=0; int times=0; for(int i=0;i<n;i++) { if(times==0) { res=num[i]; times++; } else { if(res==num[i])times++; else times--; } } return res; } /** int majorityElement(vector<int> &num) { int n=num.size(); sort(num.begin(),num.end()); return num[n/2]; } int majorityElement(vector<int> &num) { int n=num.size(); map<int,int> nmap; for(int i=0;i<n;i++) { nmap[num[i]]++; if(nmap[num[i]]>n/2)return num[i]; } } */ };