HEAP
HEAP
int parentIndex=i;
int leftChildIndex=2*parentIndex+1;
int rightChildIndex=2*parentIndex+2;
int minIndex=parentIndex;
minIndex=leftChildIndex;
minIndex=rightChildIndex;
if(minIndex==parentIndex){
return;
int temp=arr[parentIndex];
arr[parentIndex]=arr[minIndex];
arr[minIndex]=temp;
parentIndex=minIndex;
leftChildIndex=2*parentIndex+1;
rightChildIndex=2*parentIndex+2;
}
*/
int n=arr.length;
for(int i=(n/2)-1;i>=0;i--){
downHeapify(arr,i,n);
for(int i=n-1;i>=0;i--){
int temp=arr[i];
arr[i]=arr[0];
arr[0]=temp;
downHeapify(arr,0,i);
K- LARGEST
import java.util.PriorityQueue;
import java.util.ArrayList;
int n=input.length;
for(int i=0;i<k;i++){
pq.add(input[i]);
for(int i=k;i<n;i++){
pq.poll();
pq.add(input[i]);
while(!pq.isEmpty()){
ans.add(pq.peek());
pq.poll();
return ans;
*/
K-SMALLEST
import java.util.ArrayList;
import java.util.PriorityQueue;
import java.util.*;
for(int i=0;i<k;i++){
maxPQ.add(input[i]);
for(int i=k;i<n;i++){
maxPQ.poll();
maxPQ.add(input[i]);
}
while(!maxPQ.isEmpty()){
ans.add(maxPQ.peek());
maxPQ.poll();
return ans;
CHECK
import java.util.*;
boolean ans=true;
for(int i=0;i<arr.length;i++){
// int parentIndex=i;
int leftChild = 2 * i + 1;
int rightChild = 2 * i + 2;
ans=false;
}
if(rightChild < arr.length && arr[i] < arr[rightChild]){
ans=false;
return ans;
/*
* Your class should be named Solution Don't write main(). Don't read input, it
* is passed as function argument. Return output and don't print it. Taking
*/
K-th Largest
import java.util.*;
import java.util.PriorityQueue;
int ans=0;
for(int i=0;i<n;i++){
maxPQ.add(input[i]);
for(int i=1;i<=k;i++){
ans=maxPQ.poll();
return ans;
BUY
import java.util.*;
*/
int count = 0;
queue.add(i);
pq.add(input[i]);
while (!queue.isEmpty()){
if (input[queue.peek()] < pq.peek()){
queue.add(queue.poll());
}else{
pq.remove();
count++;
if (temp == k){
return count;
return count;