How to find the maximum value we can achieve by picking k elements from an array in Java

2 Answers

0 votes
// Sort the array in descending order
// Take the first k elements
// Sum them

import java.util.Arrays;

public class MaxKElements {
    public static int maxSumOfK(int[] arr, int k) {
        Arrays.sort(arr); // ascending
        int sum = 0;

        for (int i = arr.length - 1; i >= arr.length - k; i--) {
            sum += arr[i];
        }

        return sum;
    }

    public static void main(String[] args) {
        int[] arr = {11, 2, 4, 9, 3, 6, 5, 1};
        int k = 3;

        System.out.println(maxSumOfK(arr, k)); 
    }
}


/*
run:

26

*/

 



answered Apr 5 by avibootz
0 votes
// If the array is huge → use priority queue

import java.util.PriorityQueue;
import java.util.Arrays;

public class MaxKElements {
    public static int maxSumOfK(int[] arr, int k) {
        PriorityQueue<Integer> pq = new PriorityQueue<>(); // min-heap

        for (int num : arr) {
            pq.offer(num);
            if (pq.size() > k) {
                pq.poll(); // remove smallest
            }
        }

        int sum = 0;
        for (int num : pq) sum += num;

        return sum;
    }

    public static void main(String[] args) {
        int[] arr = {11, 2, 4, 9, 3, 6, 5, 1};
        int k = 3;

        System.out.println(maxSumOfK(arr, k));
    }
}


/*
run:

26

*/

 



answered Apr 5 by avibootz

Related questions

...