【牛客】数组中出现次数超过一半的数字

题目:

数组中出现次数超过一半的数字_牛客题霸_牛客网 (nowcoder.com)

思路:

目标数据超过数组长度的一半,那么对数组,我们同时去掉两个不同的数字,到最后剩下的一个数就是该数字。

代码:

class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) 
    {
        int number = numbers[0];
        int times = 1;//出现的次数
        for(int i = 1;i<numbers.size();i++)
        {
            if(times == 0)
            {
                number = numbers[i];
                times = 1;
            }
            if(number == numbers[i])
            {
                times++;
            }
            else
            {
                times--;
            }
        }
        int count = 0;
        for(int e : numbers)
        {
            if(e == number)
            {
                count++;
            }
        }
        if(count < numbers.size()/2)
        {
            assert(1);
        }
        return number;
        
    }
};

猜你喜欢

转载自blog.csdn.net/holle_world_ldx/article/details/128059443