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 };
原文地址:https://www.cnblogs.com/fengxw/p/6061602.html