首页 > 学院 > 开发设计 > 正文

Kth Largest Element in an Array

2019-11-06 07:09:28
字体:
来源:转载
供稿:网友

Description Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.

For example, Given [3,2,1,5,6,4] and k = 2, return 5.

Note: You may assume k is always valid, 1 ≤ k ≤ array’s length.

解题思路:题目要求出第K大的数,而且是有序数列里的第k个数(假如数列是从大到小排列),这就是说重复的数也计算在内。解题的关键就在于排序上,这道题我采用的是快排的算法将数组排好序,然后再求出第K大的数。程序如下:

class Solution {public: void Qsort(vector<int> & arr,int begin,int end){ if(begin>=end) return; else{ int key=arr[begin]; int last_small=begin; //last_small记录最后一个比选定的key值小的数的位置 int i=begin+1; while(i<=end){ if(arr[i]<=key){ swap(arr[last_small+1],arr[i]); //last_small+1就是比key值大的数的位置 last_small++; //交换后,last_small后移 } i++; } swap(arr[begin],arr[last_small]); //将key值放到正确的位置 Qsort(arr,begin,last_small-1); Qsort(arr,last_small+1,end); }} int findKthLargest(vector<int>& nums, int k) { Qsort(nums,0,nums.size()-1); return nums[nums.size()-k]; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表