Heap Flashcards

(3 cards)

1
Q

Given an integer array nums and an integer k, return the k most frequent elements. You may return the answer in any order.

A

int[] result = new int[k];
Map<Integer, Integer> numberFrequency = new HashMap<>();
PriorityQueue<Integer> minHeap = new PriorityQueue<>((m, n) -> numberFrequency.get(m)-numberFrequency.get(n));
for(int num: nums) {
numberFrequency.put(num, numberFrequency.getOrDefault(num,0)+1);
}
for(int number: numberFrequency.keySet()) {
minHeap.add(number);
if (minHeap.size() > k)
minHeap.poll();
}
for(int index=0; index<k; index++)
result[index] = minHeap.poll();
return result;</Integer>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Kth Largest Element in an Array

A

PriorityQueue<Integer> maxHeap = new PriorityQueue<>();
for(int num: nums) {
maxHeap.add(num);
if (maxHeap.size() > k)
maxHeap.poll();
}
return maxHeap.peek();</Integer>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly