215.数组中的第K个最大元素/347. 前 K 个高频元素
生活随笔
收集整理的這篇文章主要介紹了
215.数组中的第K个最大元素/347. 前 K 个高频元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2020-05-25
1.題目描述
數組中的第K個最大元素2.題解
1.使用冒泡排序 2.使用快速排序 3.優先隊列(內部是用堆來實現的)3.代碼
class Solution { public:int findKthLargest(vector<int>& nums, int k) {int l=nums.size();int i,j;for (i=0;i<k;i++){for (j=0;j<l-i-1;j++){if (nums[j]>nums[j+1]){int t=nums[j];nums[j]=nums[j+1];nums[j+1]=t;}}}return nums[l-k];} }; class Solution { public:int findKthLargest(vector<int>& nums, int k) {return fastsort(nums,0,nums.size()-1,k);}int fastsort(vector<int> vec,int l,int r,int k){int tmp=fun(vec,l,r);if (tmp==k-1) return vec[k-1];else if (tmp<k-1) return fastsort(vec,tmp+1,r,k);else return fastsort(vec,l,tmp-1,k);}int fun(vector<int> &vec,int l,int r){int tmp=vec[l];while (l<r){while (l<r&&vec[r]<=tmp) r--;vec[l]=vec[r];while (l<r&&vec[l]>=tmp) l++;vec[r]=vec[l];}vec[l]=tmp;return l;} }; class Solution { public:int findKthLargest(vector<int>& nums, int k) {priority_queue <int,vector<int>,less<int> >que;int l=nums.size();for (int i=0;i<l;i++){que.push(nums[i]);}for (int i=0;i<k-1;i++){que.pop();}return que.top();} };總結
以上是生活随笔為你收集整理的215.数组中的第K个最大元素/347. 前 K 个高频元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机端设置https访问代理(windo
- 下一篇: 1003. 检查替换后的词是否有效