#include <unordered_map>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param numbers int整型vector 
     * @return int整型
     */
    int MoreThanHalfNum_Solution(vector<int>& numbers) {
        // write code here
        // unordered_map<int, int> u_map;
        // int k = numbers.size()/2 + 1; 
        // for(int & num:numbers){
        //     if(u_map.count(num)){
        //         u_map[num]++;
        //     }else{
        //         u_map[num] = 1;
        //     }
        //     if(u_map[num]>=k) return num;
        // }
        // return 0;
        int count=1;
        int candidate = numbers[0];
        for(int i=1;i<numbers.size();i++){
            if(numbers[i]==candidate){
                count++;
            }else{
                count--;
                if(count==-1){
                    candidate = numbers[i];
                    count=1;
                }
            }
        }
        if(count>0) return candidate;
        else return 0;

    }
};