Advertisement
nikunjsoni

215-1

May 25th, 2021
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int findKthLargest(vector<int>& nums, int k) {
  4.         int kn = nums.size()-k;
  5.         return quickselect(0, nums.size()-1, kn, nums);
  6.     }
  7.    
  8.     int quickselect(int left, int right, int k, vector<int>& num){
  9.         if(left == right) return num[left];
  10.         int pivot = left;
  11.         int split = partition(left, right, pivot, num);
  12.        
  13.         if(k == split)
  14.             return num[k];
  15.         else if(k < split)
  16.             return quickselect(left, split-1, k, num);
  17.         else
  18.             return quickselect(split+1, right, k, num);
  19.     }
  20.    
  21.     int partition(int left, int right, int pivot, vector<int>& num){
  22.         while(left<right){
  23.             while(left < num.size() && num[left] <= num[pivot])
  24.                 left++;
  25.             while(num[right] > num[pivot])
  26.                 right--;
  27.             if(left<right)
  28.                 swap(num[left], num[right]);
  29.             else
  30.                 swap(num[pivot], num[right]);
  31.         }
  32.         return right;
  33.     }
  34. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement