题解 | #数组中出现次数超过一半的数字#

数组中出现次数超过一半的数字

https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163

#include <ctime>
class Solution {
public:
//迭代更新,取众数,ret就是数组第一个值,times表示出现次数。最后值可以作为判断标准
    int MoreThanHalfNum_Solution(vector<int> numbers) {
    if(numbers.empty()) return 0;

    int ret=numbers[0];
    int times=1;
    for(int i=1;i<numbers.size();i++)
    {
        if(times!=0)
        {
            if(ret==numbers[i])
            {
                times++;
            }
            else {
            times--;
            }
        }
        else {
           ret=numbers[i];
            times=1;
        }
    }
    //遍历数组,找众数
    times=0;
    for(int i=0;i<numbers.size();i++)
    {
        if(ret==numbers[i])
        {
            times++;
        }
    }
    if(times>numbers.size()/2)
       return ret;

return 0;
    }
};

数组第一个作为数组第一个假设值,记录次数。然后进行比较相同时数字times++,不同数字times--。然后判断times进行最后数组众数比较。看出现次数是否过半。

全部评论

相关推荐

10-30 10:16
南京大学 Java
永远的鹅孝子:给南大✌️跪了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
10-12 10:48
已编辑
秋招之苟:邻居家老哥19届双2硕大厂开发offer拿遍了,前几天向他请教秋招,他给我看他当年的简历,0实习实验室项目技术栈跟开发基本不沾边😂,我跟他说这个放在现在中厂简历都过不了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务