[LeetCode] 169. Majority Element
来源:互联网 发布:美工设计招聘 编辑:程序博客网 时间:2024/06/02 07:11
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.
// 直接hash统计每个元素的出现次数。可知,必然仅有一个主要元素。// 因此,当某元素的出现次数超过半数的时候,可以直接返回。class Solution {public: int majorityElement(vector<int>& nums) { unordered_map<int, int> count; const int n = nums.size(); for (auto num : nums) { if (count[num]++ > n / 2) return num; } }};
// 基本思路,由于majority element是占半数以上的元素,那么在把数组排序之后,其必然会占据数组的中间位置。// 作为优化,我们只需要局部排序即可。有点类似快排中的pivot。class Solution {public: int majorityElement(vector<int>& nums) { const int n = nums.size(); nth_element(nums.begin(), nums.begin() + n / 2, nums.end()); return nums[n / 2]; }};
class Solution {public: int majorityElement(vector<int>& nums) { return majorityElement(nums, 0, nums.size()); }private: int majorityElement(vector<int>& nums, int lo, int hi) { if (lo == hi) return nums[lo]; int mid = lo + (hi - lo) / 2; int lme = majorityElement(nums, lo, mid); int rme = majorityElement(nums, mid + 1, hi); if (lme == rme) return lme; int lmecnt = count(nums.begin() + lo, nums.begin() + hi + 1, lme); int rmecnt = count(nums.begin() + lo, nums.begin() + hi + 1, rme); return lmecnt > rmecnt ? lme : rme; }};
阅读全文
0 0
- [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
- leetcode 169. Majority Element
- leetcode 169. Majority Element
- [leetcode] 169. Majority Element
- JavaSE servlet
- 数据结构:栈的应用举例(严蔚敏版)
- A + B 问题
- C++ stl vector 清空容器
- java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法
- [LeetCode] 169. Majority Element
- 从密码到token, 一个授权的故事
- 09_斐波那契数列
- 横竖屏切换等各种情况下Activity生命周期的变化。
- mybatis分页插件使用案例(前端bootstrap)
- kylin系列教程(二)创建项目
- UVa524
- onclick="f1()"和onclick="return f1()"的区别是什么?
- java tomcat 设置Docker容器时区