?不是很理解的分治法Majority Element
2016-12-23 20:40
169 查看
class Solution { public: int majorityElement(vector<int>& nums) { return majority(nums, 0, nums.size() - 1); } private: int majority(vector<int>& nums, int left, int right) { if (left == right) return nums[left]; int mid = left + ((right - left) >> 1); int lm = majority(nums, left, mid); int rm = majority(nums, mid + 1, right); if (lm == rm) return lm; return count(nums.begin() + left, nums.begin() + right + 1, lm) > count(nums.begin() + left, nums.begin() + right + 1, rm) ? lm : rm; } };代码是这样的,也大致理解分治法,就是把一个大区域问题分成小区域问题,分而治之,然后递归就比较常用。然而不是很懂这里的,这里就是把这个数列对折对折对折,然后递归,往下走的过程就是走到每一个元素,往上走就是已知左右两侧序列的majority,然后求现在序列的majority。代码流程看懂了,但是不理解为啥这么搞.....
相关文章推荐
- Leetcode 169 Majority Element 分治
- 169. Majority Element 难度:Easy 类别:分治
- LeetCode "Majority Element"
- [LeetCode] Majority Element II
- Majority Element
- vc的MSDN的一段话不是很理解
- Majority Element
- 169. Majority Element [easy] (Python)
- LeetCode 169. Majority Element
- Majority Element II
- 169. Majority Element
- leetcode:169. Majority Element
- 169. Majority Element (C++)
- LeetCode 169. Majority Element
- html初学(这两天带着一个女孩写div+css,总感觉她理解的方式不是很对)
- [leetCode]Majority Element
- 深入理解Java并发synchronized同步化的代码块不是this对象时的操作
- [LeetCode] Majority Element
- 【Divide and Conquer】169. Majority Element(easy)
- leetcode169---Majority Element(数组中出现次数超过一半的数)