169. Majority Element
2017-03-05 23:10
155 查看
题目:
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 的算法做的。基本思想是这样子的:每次找出一对不同的数字并排除掉,不断的进行这样的操作,最后留下来的数字就是我们要的Majority Element。因为题干已经告诉了我们Majority Element是一定存在的。还有一种分治算法,就是以下解题所采用的方法:
当数组的长度为1时,其众数当然就是其唯一的元素。当数组长度大于1时,分割数组,使其数组长度不断减半,直至为1,使其更容易统计数目。code如下:
class Solution { public: int majorityElement(vector<int>& nums) { if(nums.size() == 1) return nums[0]; int size = nums.size(); int left,right; vector <int> array1,array2; for(int i = 0; i < size/2; i++) { array1.push_back(nums[i]); } for(int i = size/2; i < size; i++) { array2.push_back(nums[i]); } left = majorityElement(array1); right = majorityElement(array2); if(right == left) return right; int x = 0; int y = 0; for(int i = 0; i < size; i++) { if(nums[i] == left) x++; if(nums[i] == right) y++; } if(x > y) return left; else return right; } };
相关文章推荐
- 169[Esay]:Majority Element
- 169. Majority Element
- 169. Majority Element
- LeetCode 169:Majority Element
- [leetcode] 169. Majority Element 解题报告
- [LeetCode] 169. Majority Element 多数元素
- leetcode 169. Majority Element 多数投票算法(Boyer-Moore Majority Vote algorithm)
- 【LeetCode-169】Majority Element
- 169. Majority Element
- 169. Majority Element
- LeetCode 169. Majority Element
- Leetcode169: Majority Element
- 169. Majority Element----Array----Easy----20160925
- leetcode之169. Majority Element
- LeetCode 169. Majority Element
- Leetcode #169 Majority Element
- 【LeetCode】 169. Majority Element
- 169. Majority Element
- 169. Majority Element
- Leetcode-169. Majority Element