229. Majority Element II
来源:互联网 发布:网络编辑发展前景 编辑:程序博客网 时间:2024/06/05 16:04
//64ms 用了多余的空间class Solution {public: vector<int> majorityElement(vector<int>& nums) { unordered_map<int,int> m; vector<int> v; int n=nums.size(); for(int i=0;i<n;i++) { if(m.find(nums[i])==m.end()) m[nums[i]]=1; else { m[nums[i]]++; } if(m[nums[i]]>n/3) { //cout<<nums[i]<<" "; v.push_back(nums[i]); m[nums[i]]=-n; } } return v; }};
//20ms//similar to quicksort//排序时候将其分为三部分,小于mark,等于mark,大于mark的,然后判断等于mark的个数够不够class Solution {public: pair<int,int> find_partition(vector<int>& nums,int l,int r) { if(l==r) return {l,l}; int l0=l,r0=r; int p=nums[l]; int start=l++; int eq=l; for(int i=l;i<=r;i++) { if(nums[i]<p) { if(i!=l) { if(eq!=l) { int temp=nums[l]; nums[l]=nums[i]; nums[i]=nums[eq]; nums[eq]=temp; } else { int temp=nums[l]; nums[l]=nums[i]; nums[i]=temp; } } eq++; l++; } else if(nums[i]==p) { int temp=nums[eq]; nums[eq]=nums[i]; nums[i]=temp; eq++; } } l--; int temp=nums[l]; nums[l]=nums[start]; nums[start]=temp; return {l,eq-1}; } void quick_sort(vector<int>& nums,int l,int r,vector<int>& v) { if(l>r) return; pair<int,int> q=find_partition(nums,l,r); if(q.second-q.first>=nums.size()/3) v.push_back(nums[q.second]); if(q.first-l>nums.size()/3) quick_sort(nums,l,q.first-1,v); if(r-q.second>nums.size()/3) quick_sort(nums,q.second+1,r,v); } vector<int> majorityElement(vector<int>& nums) { if(nums.size()<2) return nums; vector<int> v; int n=nums.size(); quick_sort(nums,0,nums.size()-1,v); return v; }};
0 0
- 229.Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- 229. Majority Element II
- Gradle学习系列之九——自定义Task类型
- 【机房重构】——实体类(Model)的奇葩说
- 【机房重构个人版】上下机与职责链
- hdu5672 String(尺取法)
- 指针之示例大集合
- 229. Majority Element II
- Gradle学习系列之十——自定义Plugin(本系列完)
- android之自定义webView之头部进度加载效果
- Android自定义组合控件---教你如何自定义下拉刷新和左滑删除
- 批量重命名文件名称小软件
- Spring Web MVC 入门分析
- 设计模式之外观模式 Facade
- Ruby元编程-学习笔记(四)-类定义
- C++作业四