这个算法是用来找出在数列中出现次数过半的数。
他采用的基本思想是每次都从数组中找出不同的一对数,然后删除,最后留下的就是我们要找的数。
例子:http://www.cs.utexas.edu/~moore/best-ideas/mjrty/example.html
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>& nums) {
              int count=0;
              int num;
               for(int i=0;i<nums.size();i++)
              {
                    if(count==0)
                      {
                            num=nums[i];
                             count++;
                      }
                   else
                      {
                            num==nums[i]?count++:count--;
                            if(count>(nums.size()/2))
                          {
                            return nums[i];
                      }
                }
            }
          return num;
        
    }
};
原文:http://www.cnblogs.com/baiyuhong/p/5100640.html