Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Brute Force */
- class KthLargest {
- int k;
- vector <int> arr;
- int _size;
- public:
- KthLargest(int k, vector<int>& nums) {
- this->k=k;
- sort(nums.begin(),nums.end(),greater<int>());
- for(auto itr:nums) arr.push_back(itr);
- _size=nums.size();
- }
- int add(int val) {
- arr.push_back(val);
- _size++;
- int i=_size-1;
- while(i>0 && arr[i]>arr[i-1]){
- swap(arr[i],arr[i-1]);
- i--;
- }
- return arr[k-1];
- }
- };
- /*
- Logic:
- take a min heap and push the element if size of min heap is less than k.
- if min heap size is k so,kth maxium element will be at top of min heap
- so if current element is smaller than top of min heap then it will not
- contribute in kth maximum element else pop top element and push current
- element at top.
- every time kth maxiumum element will be at top if min heap size is k
- */
- class Solution {
- public:
- vector<int> kthLargest(int k, int arr[], int n) {
- priority_queue<int,vector<int>,greater<int>> q;
- vector <int> res;
- for(int i=0;i<n;i++){
- if(q.size()<k){q.push(arr[i]);}
- else if(q.top()<arr[i]){
- q.pop();
- q.push(arr[i]);
- }
- if(q.size()<k) res.push_back(-1);
- else res.push_back(q.top());
- }
- return res;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement