LeetCode Problem 169: Majority Element查找多数元素
2014-12-22 21:13
609 查看
描述: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.
思路1:Moore voting algorithm--每找出两个不同的element,就成对删除即count--,最终剩下的一定就是所求的。时间复杂度:O(n)
思路2:随机挑选一个元素,检查是否是多数元素。时间复杂度:Average:O(n)。期望查找次数 <2
附LeetCode建议解决方案:
思路1:Moore voting algorithm--每找出两个不同的element,就成对删除即count--,最终剩下的一定就是所求的。时间复杂度:O(n)
class Solution { public: int majorityElement(vector<int> &num) { int elem = 0; int count = 0; for(int i = 0; i < num.size(); i++) { if(count == 0) { elem = num[i]; count = 1; } else { if(elem == num[i]) count++; else count--; } } return elem; } };
思路2:随机挑选一个元素,检查是否是多数元素。时间复杂度:Average:O(n)。期望查找次数 <2
class Solution { public: int majorityElement(vector<int> &num) { int count = 0; for(;;) { if(num.size() == 1) return num[0]; else { int i = rand() % (num.size() - 1); for(int j = 0; j < num.size(); j++) { if(num[j] == num[i]) count++; } if(count > (num.size() / 2)) return num[i]; else { count = 0; continue; } } } } };
附LeetCode建议解决方案:
相关文章推荐
- LeetCode 题解 169. Majority Element(查找多数元素)
- [LeetCode]169. Majority Element(多数元素)
- 169. Majority Element 查找多数元素
- LeetCode-169:Majority Element (数组中的多数元素)
- [LeetCode] 169. Majority Element 多数元素
- leetcode 169. Majority Element 多数投票算法(Boyer-Moore Majority Vote algorithm)
- 169. Majority Element (寻找多数元素)
- LeetCode Problem No'169 Majority Element
- 【LeetCode】169. Majority Element (多数投票算法 & 算法迁移能力)
- LeetCode 169. Majority Element (数组的主要元素、摩尔投票算法)
- 字符串算法——查找数组多数元素(Majority Element II)
- Leetcode:169. Majority Element(找到数组中出现次数最多的元素)
- LeetCode 169 Majority Element
- leetcode Majority Element 寻找出现次数最多元素
- leetcode 169 Majority Element 冰山查询
- Leetcode 169 Majority Element
- Leetcode 162 Find Peak Element 查找峰值元素(极大值)
- LeetCode--Majority Element II & 多数投票算法
- 【LeetCode】169 - Majority Element
- leetcode[169]:Majority Element