数组中有一个数字出现的次数超过数组长度的一半

xiaoxiao2021-02-28  93

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

思路1:

class Solution { public:     int MoreThanHalfNum_Solution(vector<int> numbers) {                  int len=numbers.size();         if(len==0) return  0;                  int times=1;         int res=numbers[0];                  for(int i=1;i<len;i++)         {             //统计函数。            if(numbers[i]==res)                {                times++;                }             else if(times>0)                 {                                  times--;                  }             else {                  times=1;                 res=numbers[i];                                   }            }         //判断多余的如何判断。         int cnt=0;        for(int i=0;i<len;i++)            if(numbers[i]==res)                cnt++;              if(len<2*cnt)         return res;     else         return 0; }                        };

转载请注明原文地址: https://www.6miu.com/read-43530.html

最新回复(0)