
代码:
- 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
//因为一开始times==1,因此i应该从1开始 - {
- if(times!=0)
- {
- if(numbers[i]!=result)
- {
- times--;
- }
- else//记录重复元素个数
- {
- times++;
- }
- }
- else//众数与非众数相消完了,重新开始消除
- {
- result=numbers[i];
- times=1;
- }
-
- }
- //一般来讲最后的result不一定是符合要求的数字,但题目中保证数组中是有超过数组长度一半的数字的,因此不用遍历
- return result;
- }
- };