博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Array]169. Majority Element
阅读量:5867 次
发布时间:2019-06-19

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

Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.

You may assume that the array is non-empty and the majority element always exist in the array.

 思路:给一个大小为n的一维数组,找到里面出现次数最多的数字。出现最多的元素的意思是在数组中出现超过一半的次数。

最暴力的算法是对数组进行排序,然后输出中间的数字。

代码如下:

int majorityElement(vector
& nums) { sort(nums.begin(), nums.end()); return nums[nums.size() / 2]; }

但是这种算法的时间复杂度会比较大。

优秀的代码是投票的方式:Every number in the vector votes for itself, the majority number gets the most votes. Different number offsets the votes.,每个数字对自己进行投票,出现次数最多的元素将会得到最多的票数,不同的数字之间会抵消投票。

具体代码如下:

int majorityElement(vector
&num) { int vote = num[0]; int count = 1; int size = num.size(); //vote from the second number for( int i = 1; i < size; i++ ) { if( count == 0 ) { vote = num[i]; count++; } else if( vote == num[i] ) count++; else count--; } return vote; }

参考资料:https://gregable.com/2013/10/majority-vote-algorithm-find-majority.html

转载于:https://www.cnblogs.com/qinguoyi/p/7307146.html

你可能感兴趣的文章
my first blog
查看>>
如何使eclipse中subclipse插件变成英文菜单
查看>>
Saltstack 自动化管理基础篇(一)
查看>>
常用js验证代码
查看>>
eclipse地图插件
查看>>
SpringBoot+Docker+Git+Jenkins实现简易的持续集成和持续部署
查看>>
CentOS Linux查询软件包的安装位置
查看>>
php--数组来模拟堆栈
查看>>
ios 开发 NSArray 排序
查看>>
数据库连接池参数参考
查看>>
简述JVM、GC
查看>>
实现页面静态化的两种方法
查看>>
测试测试
查看>>
解决U盘制作系统盘后隐藏未分配的空间
查看>>
VS 2010 /Oi
查看>>
mongodb GridFS存储pdf文件 测试
查看>>
Server Tomcat v7.0 Server at localhost was unable
查看>>
Linux就该这么学:rhce考试经验分享
查看>>
shell学习七函数
查看>>
losetup命令和loop设备的使用
查看>>