1 class Solution { 2 public: 3 int majorityElement(vector<int>& nums) { 4 int n=nums.size(),i; 5 int m=nums[0]; 6 int cnt=1; 7 bool find=true; 8 for(i=1;i<n;i++) 9 { 10 if(!find) 11 { 12 m=nums[i]; 13 find=true; 14 cnt=1; 15 continue; 16 } 17 if(m==nums[i]) 18 cnt++; 19 else 20 { 21 cnt--; 22 if(cnt==0) 23 find=false; 24 } 25 } 26 return m; 27 } 28 };
查找大于[n/2]+1的数,可以假定一个数是众数,若碰到和他不一样的数,将个数减1,众数一定是最后唯一存活下来的数。