kth-largest-elementV2.cpp (1060B)
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 using namespace std; 5 //This is my solution using custom count sort to be faster than quicksort (default sort) 6 7 8 //Leet Ratings 9 // Speed Memory 10 //Total 81ms 46.3MB 11 //Beats 96.3% 53.25% 12 13 14 int findKthLargest(vector<int>& nums, int k) { 15 int highest = nums[0]; 16 int lowest = nums[0]; 17 for(int i = 0 ; i < nums.size() ; ++i){ 18 if(nums[i] > highest){ 19 highest = nums[i]; 20 } 21 else if(nums[i] < lowest){ 22 lowest = nums[i]; 23 } 24 } 25 int diff = (highest - lowest) + 1; 26 vector<int> vec(diff , 0); 27 for(int i = 0 ; i < nums.size() ; ++i){ 28 vec[nums[i] - lowest] = vec[nums[i] - lowest] + 1; 29 } 30 int vals = 0; 31 for(int i = vec.size() - 1; i >= 0 ; --i){ 32 vals += vec[i]; 33 if(vals >= k){ 34 return i + lowest; 35 } 36 } 37 return 0; 38 } 39 40 41 42 43 44 45 int main(){ 46 vector<int> input_vec = {0, 1, 2, 4, 5, 6, 7,7 ,8, 9, 9, 9}; 47 cout << findKthLargest(input_vec, 3) << endl; 48 return 0; 49 }