【剑指Offer】数组中出现次数超过一半的数字
发布日期:2022-02-10 08:55:15 浏览次数:25 分类:技术文章

本文共 471 字,大约阅读时间需要 1 分钟。

题目

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

思路

第一想法是哈希表来存出现次数,遇到超过一半的就直接退出循环。

后来看到更好的思路,就是投票法。

题解

代码

class Solution {public:    int majorityElement(vector
& nums) { int sum = 0; int k; for(int i = 0;i < nums.size();i++){ if(sum == 0){ k = nums[i]; } if(k == nums[i]){ sum++; }else{ sum--; } } return k; }};

 

转载地址:https://blog.csdn.net/hanmin822/article/details/105764495 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指Offer】最小的k个数
下一篇:【剑指Offer】数据流中的中位数

发表评论

最新留言

不错!
[***.144.177.141]2024年04月08日 22时06分33秒