diff --git a/Sort/215.Kth-Largest-Element-in-an-Array/215.Kth-Largest-Element-in-an-Array.cpp b/Sort/215.Kth-Largest-Element-in-an-Array/215.Kth-Largest-Element-in-an-Array.cpp index 330638786..2191f3b55 100644 --- a/Sort/215.Kth-Largest-Element-in-an-Array/215.Kth-Largest-Element-in-an-Array.cpp +++ b/Sort/215.Kth-Largest-Element-in-an-Array/215.Kth-Largest-Element-in-an-Array.cpp @@ -2,32 +2,23 @@ class Solution { public: int findKthLargest(vector& nums, int k) { - return QuickSort(nums,nums.size()+1-k); - } - - int QuickSort(vector&nums, int n) - { - int pivot=nums[nums.size()/2]; - - int count = 0; - vectorsmall; - vectorlarge; - - for (int k=0; kpivot) - large.push_back(nums[k]); + int mid = right-(right-left)/2; + if (count(nums,mid) >=k) + left = mid; else - small.push_back(nums[k]); - } - - if (n<=small.size()) - return QuickSort(small,n); - else if (n>small.size()+count) - return QuickSort(large,n-small.size()-count); - else - return pivot; + right = mid-1; + } + return left; + } + + int count(vector&nums, int t) + { + int ret = 0; + for (auto x: nums) + ret += (x>=t); + return ret; } };