MCPcopy Create free account
hub / github.com/ashishps1/awesome-leetcode-resources / TopKElements

Class TopKElements

patterns/javascript/topKElements.js:1–88  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1class TopKElements {
2
3 // K Largest Elements using Sorting
4 kLargestElementsSortingApproach(nums, k) {
5 nums.sort((a, b) => b - a);
6 return nums.slice(0, k);
7 }
8
9 // K Largest Elements using Max Heap
10 kLargestElementsMaxHeapApproach(nums, k) {
11 const maxHeap = new MaxPriorityQueue({ priority: x => x });
12 for (const num of nums) {
13 maxHeap.enqueue(num);
14 }
15 const result = [];
16 for (let i = 0; i < k; i++) {
17 result.push(maxHeap.dequeue().element);
18 }
19 return result;
20 }
21
22 // K Largest Elements using Min Heap
23 kLargestElementsMinHeapApproach(nums, k) {
24 const minHeap = new MinPriorityQueue({ priority: x => x });
25 for (let i = 0; i < k; i++) {
26 minHeap.enqueue(nums[i]);
27 }
28 for (let i = k; i < nums.length; i++) {
29 minHeap.enqueue(nums[i]);
30 if (minHeap.size() > k) {
31 minHeap.dequeue();
32 }
33 }
34 const result = [];
35 for (let i = 0; i < k; i++) {
36 result.push(minHeap.dequeue().element);
37 }
38 return result;
39 }
40
41 // Top K Frequent Elements using Sorting
42 topKFrequentElementsSortingApproach(nums, k) {
43 const frequencyMap = new Map();
44 nums.forEach(num => frequencyMap.set(num, (frequencyMap.get(num) || 0) + 1));
45 return Array.from(frequencyMap)
46 .sort((a, b) => b[1] - a[1])
47 .slice(0, k)
48 .map(entry => entry[0]);
49 }
50
51 // Top K Frequent Elements using Min Heap
52 topKFrequentElementsMinHeapApproach(nums, k) {
53 const frequencyMap = new Map();
54 nums.forEach(num => frequencyMap.set(num, (frequencyMap.get(num) || 0) + 1));
55 const minHeap = new MinPriorityQueue({ priority: x => x[1] });
56 frequencyMap.forEach((value, key) => {
57 minHeap.enqueue([key, value]);
58 if (minHeap.size() > k) {
59 minHeap.dequeue();
60 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected