Majority Element II
来源:互联网 发布:unity3d 过山车轨道 编辑:程序博客网 时间:2024/04/30 09:44
原题:
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space.
解题:
这个其实跟编程之美上面的“寻找发帖水王”的题如出一辙,也就是寻找一个数组中超过一半的元素。只不过此题把超过一半的元素改成了超过n/3的元素,那么这时只需要采用同样的思路即可。也就是数组只有不超过两个元素满足这样的条件,遍历一遍数组既可以找出这两个元素,然后再遍历两边数组统计这两个元素出现的次数是否满足大于n/3的要求即可。可以AC的C++代码如下(O(N), O(1)):
vector<int> majorityElement(vector<int>& nums) { vector<int> ret; int size = nums.size(); if(size < 0){ return ret; } int first = 0, second = 0; int index1 = 0, index2 = 0; for(int i=0; i<size; i++){ if(index1 == 0 || first == nums[i]){ index1 ++; first = nums[i]; }else if(index2 == 0 || second == nums[i]){ index2 ++; second = nums[i]; }else{ index1 --; index2 --; } } index1 = index2 = 0; for(int i=0; i<size; i++){ if(nums[i] == first) index1 ++; else if(nums[i] == second) index2 ++; } if(index1 > (size / 3)) ret.push_back(first); if(index2 > (size / 3)) ret.push_back(second); return ret; }
0 0
- Majority Element && Majority Element II
- Majority Element II
- [LeetCode] Majority Element II
- 229.Majority Element II
- Majority Element II
- [leetcode] Majority Element II
- Majority Element II
- #leetcode#Majority Element II
- 【LeetCode】Majority Element II
- LeetCode Majority Element II
- LeetCode - Majority Element II
- Majority Element II
- LeetCode Majority Element II
- leetcode: Majority Element II
- [LeetCode] Majority Element II
- leetcode--Majority Element II
- LeetCode229:Majority Element II
- Majority Element II
- CRB and His Birthday(完全背包变形)
- 委托 02
- CSS+JS 悬浮固定菜单效果
- 程序员保值的五个关键点
- JFrame, JPanel, JComponent
- Majority Element II
- java的异常处理
- 打造无限自动循环viewpager
- shell-init: error retrieving current directory: getcwd: cannot access parent directories
- Java 内存划分
- Seaside 3665 (最短路)
- #define \const\ typedef
- 接口和抽象方法的学习(7.18)
- C++面试常见题目问与答(汇总一)