leetcode169. Majority Element
来源:互联网 发布:加盟淘宝店需要多少钱 编辑:程序博客网 时间:2024/05/22 06:56
题目leetcode169. Majority Element
难度等级:easy
思路
由于majority member 出现次数大于总数一半,实际上就是求数组的中位数。最简单的思路,就是先排序,然后二分查找到中位数。但其实,可以直接利用快排算法的partition函数,就可以把中位数找出来。具体的做法就是,分块,但分块的中间元素index 等于 中位数的index时,结束。这样,时间复杂度虽然和快排一样,但是复杂度的系数会比快排小很多。
实现
class Solution {public: int partition(vector<int>& nums, int l, int r) { if(l > r) return -1; else { int key = nums[r], next = l; for(int i = l; i < r; i++) { if (nums[i] < key) { //swap nums[i] and nums[next] int tmp = nums[next]; nums[next++] = nums[i]; nums[i] = tmp; } } //swap nums[r] and nums[next] int tmp = nums[next]; nums[next] = nums[r]; nums[r] = tmp; return next; } } int majorityElement(vector<int>& nums) { vector<int> c_nums(nums); int size = c_nums.size(); int target = size / 2; int l = 0, r = size - 1; for(;;) { int mid = this->partition(c_nums, l, r); if(mid == target) break; else if (mid < target) l = mid + 1; else r = mid - 1; } return c_nums[target]; }};
阅读全文
0 0
- LeetCode169 Majority Element
- LeetCode169:Majority Element
- leetcode169 Majority Element
- LeetCode169. Majority Element(JAVA)
- Leetcode169: Majority Element
- LeetCode169 Majority Element
- LeetCode169. Majority Element题解
- leetcode169~Majority Element
- leetcode169. Majority Element
- leetcode169. Majority Element
- LeetCode169. Majority Element
- leetcode169: Majority Element
- LeetCode169. Majority Element解答
- LeetCode169. Majority Element
- LeetCode169——Majority Element
- LeetCode169. Majority Element分治法
- 算法分析与设计:leetcode169.Majority Element
- leetcode169: Majority Elemen
- CCF——模板生成系统
- 美国高通 Snapdragon Neural Processing Engine SDK (SNPE) 系列 (1):用户自定义层JNI实现
- springCloud(七)
- 2D图形
- http://www.cnblogs.com/tbcaaa8/p/4415429.html
- leetcode169. Majority Element
- p2p应该可以取代缓存业务吧
- myeclipse servlet的基本使用
- QT Creator 快速入门教程 读书笔记(一)
- 浅谈 概率与期望 DP
- 运行mvn命令出现MojoNotFoundException异常
- ztree的简单使用
- c++初级 之 双向链表
- JSTL标签库