Kth largest Element in an ArrayTotal accepted:32668 Total submissions:109273 difficulty:medium
Find the kth largest element in an unsorted array. Note that it was the kth largest element in the sorted order and not the kth distinct element.
For example,
Given [3,2,1,5,6,4]
and k = 2, return 5.
Note:
You may assume k are always valid, 1≤k≤array ' s length.
classSolution {Private: intPartion (vector<int>& Nums,intStartintend) { if(end-start==1){ returnstart; } Srand (Time (0)); intRindex = start + rand ()% (end-start); Swap (Nums[rindex],nums[end-1]); inti=start-1, j=start; while(J < end-1){ if(Nums[j] < nums[end-1]) {Swap (nums[++I],nums[j]); } ++J; } Swap (nums[++i],nums[end-1]); returni; } Public: intFindkthlargest (vector<int>& Nums,intk) {intStart =0; intEnd =nums.size (); K= End-K; intindex =partion (nums,start,end); while(Index! =k) { if(Index <k) {Start= index+1; }Else{End=index; } Index=partion (nums,start,end); } returnNums.size () = =0?0: Nums[k]; }};
Kth largest Element in an Array