您的位置:首页 > 其它

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

2017-07-10 22:12 555 查看
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为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;

}

            

    

    

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐