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 majority;
    int cnt = 0;
    for(int i=0; i<num.size(); i++){
        if ( cnt ==0 ){
            majority = num[i];
            cnt++;
        }else{
            majority == num[i] ? cnt++ : cnt --;
            if (cnt > num.size()/2) return majority;
        }
    }
    return majority;
}
};原文:http://www.cnblogs.com/yangykaifa/p/7039322.html