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

Class TopKElements

patterns/java/TopKElements.java:6–151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4import java.util.*;
5
6public class TopKElements {
7
8 /*
9 * ********** K Largest Elements **********
10 */
11
12 public int[] kLargestElementsSortingAppraoch(int[] nums, int k) {
13 // Step 1: Sort the array in descending order
14 Integer[] numsArray = Arrays.stream(nums).boxed().toArray(Integer[]::new);
15 Arrays.sort(numsArray, Collections.reverseOrder());
16
17 // Step 2: Extract the first K elements
18 int[] result = new int[k];
19 for (int i = 0; i < k; i++) {
20 result[i] = numsArray[i];
21 }
22 return result;
23 }
24
25 public int[] kLargestElementsMaxHeapAppraoch(int[] nums, int k) {
26 // Max heap
27 PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
28
29 // Add all numbers to the max heap
30 for (int num : nums) {
31 maxHeap.add(num);
32 }
33
34 // Extract the top K largest elements
35 int[] result = new int[k];
36 for (int i = 0; i < k; i++) {
37 result[i] = maxHeap.poll(); // Extracts the largest element
38 }
39 return result;
40 }
41
42 public int[] kLargestElementsMinHeapAppraoch(int[] nums, int k) {
43 // Min heap
44 PriorityQueue<Integer> minHeap = new PriorityQueue<>();
45
46 // Add first K elements into the min heap
47 for(int i = 0; i < k; i++) {
48 minHeap.add(nums[i]);
49 }
50
51 // Process the remaining elements
52 for (int i = k; i < nums.length; i++) {
53 minHeap.add(nums[i]);
54 if (minHeap.size() > k) {
55 minHeap.poll();
56 }
57 }
58
59 // Extract the top K largest elements from the min heap
60 int[] result = new int[k];
61 for (int i = 0; i < k; i++) {
62 result[i] = minHeap.poll();
63 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected