Majority Element
来源:互联网 发布:北京金和网络北京 编辑:程序博客网 时间:2024/06/05 11:10
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.
解法一:
Moore voting algorithm–每找出两个不同的element,就成对删除即count–,最终剩下的一定就是所求的。时间复杂度:O(n)
这种算法很难想到,却很巧妙。
int majorityElement(vector<int>& nums) { int curent = 0; int counter = 0; for (int i = 0; i < nums.size(); i++){ if (counter == 0){ curent = nums[i]; counter = 1; } else{ if (curent == nums[i]){ counter++; } else{ counter--; } } } return curent;}
解法二:
将数组里的书保存到一个哈希表,然后找到个数大于n/2的数。
int majorityElement2(vector<int>& nums){ map<int, int> m; map<int, int>::iterator iter; for (int i = 0; i < nums.size(); i++){ iter = m.find(nums[i]); if (iter == m.end()){ m[nums[i]] = 1; } else{ m[nums[i]]++; } if (m[nums[i]] > nums.size() / 2){ return nums[i]; } } return 0;}
参考:http://blog.csdn.net/booirror/article/details/42738563
0 0
- majority element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- Majority Element
- majority element
- Majority Element
- Majority Element
- C# 给PDF文件添加水印
- 个人笔记 js 12 js返回上一页
- github笔记2
- position 和float 的对立。
- 使用代码为 Xcode 工程添加文件
- Majority Element
- 删除通讯录所有信息
- Leetcode -- Wildcard Matching
- 取SVN过去的某个版本文件
- 教你如何快速下载旧版本的Firefox浏览器
- hdu 1754 I Hate It(线段树单点更新(a位置的值变成b)+区间求最值)
- 数据传输协议库(protobuffer & flatbuffer)
- 调用系统导航
- 阶乘尾数零的个数