数组中出现次数超过一半的数字(算法)

来源:互联网 发布:合肥金方网络是干嘛的 编辑:程序博客网 时间:2024/06/05 09:40

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。


class Solution {public:    int MoreThanHalfNum_Solution(vector<int> numbers) {        int len = numbers.size();        if(len <= 0) return  0;                 int times = 0;        int num = numbers[0];        for(int i = 0; i < len;i++)            {                    if(times == 0)                        {                            times = 1;                            num = numbers[i];                    }                    else                        {                        if(num == numbers[i])                                times++;                        else                                times--;                    }        }        times = 0;        for(int i = 0; i < len; i++)            {            if(num == numbers[i])                times++;        }        if(times * 2 > len)            return num;                 return 0;    }};


0 0
原创粉丝点击