
代码:
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param numbers int整型vector 
     * @return int整型
     */
    int MoreThanHalfNum_Solution(vector<int>& numbers) {
        int sz=numbers.size();
        int result=numbers[0];
        int times=0;
        for(int i=0;i<sz;i++)//因为一开始times==1,因此i应该从1开始
        {
            if(times!=0)
            {
                if(numbers[i]!=result)
                {
                    times--;
                }
                else//记录重复元素个数
                {
                    times++;
                }
            }
            else//众数与非众数相消完了,重新开始消除
            {
                result=numbers[i];
                times=1;
            }
            
        }
        //一般来讲最后的result不一定是符合要求的数字,但题目中保证数组中是有超过数组长度一半的数字的,因此不用遍历
        return result;
    }
}; 
                


















