Leetcode-169 Majority Element
#169 Majority Element
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.
题解:题目已经肯定主元素一定存在,且出现次数大于n/2,数组又假定已经非空。采用分治法,每找到两个不同的元素,则成对删除,最终剩下的一定就是所求的。
1 class Solution { 2 public: 3 int majorityElement(vector<int>& nums) { 4 int most = 0; 5 int cnt = 0; 6 for(int i=0;i<nums.size();i++) 7 { 8 if(cnt==0) 9 { 10 most=nums[i]; 11 cnt++; 12 } 13 else 14 { 15 if(nums[i]==most) 16 { 17 cnt++; 18 } 19 else 20 { 21 cnt--; 22 } 23 } 24 25 } 26 return most; 27 } 28 };