[LeetCode] Algorithms-169. Majority Element
来源:互联网 发布:惠普网络驱动官方下载 编辑:程序博客网 时间:2024/06/06 02:02
描述
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.
思路
这道题首先把题意理解明白,要我们找大多数元素, 更明确地说就是找数组中出现次数超过数组长度一半的那个元素。而且,下面的提示说假设测试样例给出的数组中一定存在这个大多数元素,因此不用去考虑是否存在这个元素,只要找出来就可以了。
解题想法:我们可以声明两个参数 major, count.major作为所求元素的候选元素,count记录这个候选元素的出现次数(其实这个说法不对,但是可以这样理解),然后去遍历数组
如果数组元素和候选元素相同,那么count++
如果数组元素和候选元素不同,那么count–
如果count的值为0了,那么就设置当前的数组元素为新的候选元素
直到遍历结束,时间复杂度为O(n)
算法分析
因为已经知道数组中肯定有一个数组元素的出现次数大于或等于数组长度的一半,因此如果候选元素不是大多数元素,那么便利过程中一定存在一个时刻是count的值为0,然后设置新的候选元素,直到候选元素就是所求的那个元素;如果候选元素就是要找的那个大多数元素,因为大多数元素的出现次数大于或等于数组长度的一半,因此遍历过程中虽然会出现候选元素的更换,但到最后候选元素一定是要求的那个元素。
代码
class Solution {public: int majorityElement(vector<int>& nums) { int major = 0, count = 0; for(int i = 0; i < nums.size(); i++) { if(count == 0) { major = nums[i]; count++; } else { if(major == nums[i]) count++; else count--; } } return major; }};
- [LeetCode] Algorithms-169. Majority Element
- LeetCode Algorithms #169 <Majority Element>
- Algorithms—169.Majority Element
- [LeetCode]169.Majority Element
- LeetCode 169.Majority Element
- 【LeetCode】169.Majority Element
- LeetCode 169. Majority Element
- LeetCode 169. Majority Element
- [leetcode] 169.Majority Element
- Leetcode 169. Majority Element
- 【LeetCode】169. Majority Element
- [LeetCode]169. Majority Element
- 169. Majority Element LeetCode
- LeetCode 169. Majority Element
- LeetCode 169. Majority Element
- Leetcode 169. Majority Element
- [LeetCode]169. Majority Element
- 【LeetCode】169. Majority Element
- c语言--数组初始化
- Hibernate学习笔记(3)---hibernate关联关系映射
- H264中I帧,B帧,P帧,PTS,DTS含义说明
- win10 64位+Kinect 2.0+VS 2013+opencv开发环境搭建及深度图像读取
- 数据库SQL优化大总结之 百万级数据库优化方案
- [LeetCode] Algorithms-169. Majority Element
- SharedSizeGroup及Collapsed属性分析及窗口隐藏
- 使用c++11的function函数绑定参数个数不同的成员函数
- TCP 协议中MSS的理解
- 最具影响力的十大扫地机器人品牌
- android新版本下打开相册取出相片新姿势
- dict,set,list,tuple应用详解
- Java知识:LinkedHashMap详解
- [Java基础]深入探讨String、StringBuffer与StringBuilder的区别