LeetCode[Array]: Majority Element
来源:互联网 发布:网络渗透的目的 编辑:程序博客网 时间:2024/06/05 01:12
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.
这个题目可以利用“位操作”来实现:
假设每个数都是一个比特,即要么是0,要么是1。在这种前提下,可以统计总共有多少个1,然后将这个统计值除上超过总数一半的最小正整数,即可知道那个数字出现的次数更多。对于一个32位int来说,分别统计32个比特位即可。
C++代码实现如下:
int majorityElement(vector<int> &num) { int bitCount[32] = {0}; for (int i = 0; i < num.size(); ++i) { for (int j = 0; j < 32; ++j) { if (num[i] & (1 << j)) ++bitCount[j]; } } int result = 0; int count = (num.size() >> 1) + 1; for (int j = 0; j < 32; ++j) { if (bitCount[j] / count) result |= (1 << j); } return result; }
上述解法的时间复杂度为O(N),空间复杂度为O(1)。时间性能表现如下图所示:
这个问题还有一个跟巧妙的解法,那就是采用Moore’s voting algorithm,链接中有详细介绍,在此不作介绍。
int majorityElement(vector<int> &num) { int curIdx = 0, count = 1; for (int i = 1; i < num.size(); ++i) { num[i] == num[curIdx] ? ++count : --count; if (!count) { curIdx = i; count = 1; } } return num[curIdx]; }
这种解法的时间复杂度也为O(N),空间复杂度也为O(1)。但时间性能表现更好,如下图所示:
0 0
- LeetCode[Array]: Majority Element
- [leetcode][array] Majority Element
- LeetCode-Array-169. Majority Element
- 【LeetCode】169. Majority Element Majority Element Given an array of size n, find the majority eleme
- [Array]Majority Element
- 【leetcode】Array—— Majority Element(169)
- 【leetcode】Array——Majority Element II(229)
- leetcode题解-169. Majority Element && 189. Rotate Array
- 【leetcode】Majority Element II,Majority element algorithm
- Leetcode: Majority Element &Majority Element II
- Leetcode Majority Element
- leetcode 169-Majority Element
- 【leetcode 哈希表】Majority Element
- LeetCode:Majority Element
- leetcode:Majority Element
- leetcode: Majority Element
- [LeetCode] Majority Element
- leetcode 153: Majority Element
- UML的开始
- 最长平台问题 C实现
- 按字母顺序以及区间排序汉字
- Android 导入工程出现Unable to resolve target 'android-xx'错误
- 海量信息处理之位图的应用
- LeetCode[Array]: Majority Element
- AndroidWear官方文档总结04 - 创建Android Wear 项目
- Android 4.4.4 开机铃声相关知识
- hibernate零配置表自身(OneToMany)关联
- xCode 安装Mobile Device Framework出错的问题的解决方法
- Android布局文件layout.xml的属性详解
- HTML默认IE文档模式代码
- C/C++ 练习题及答案
- linux下 线程属性常用操作