LeetCode-in-Java

3462. Maximum Sum With at Most K Elements

Medium

You are given a 2D integer matrix grid of size n x m, an integer array limits of length n, and an integer k. The task is to find the maximum sum of at most k elements from the matrix grid such that:

Return the maximum sum.

Example 1:

Input: grid = [[1,2],[3,4]], limits = [1,2], k = 2

Output: 7

Explanation:

Example 2:

Input: grid = [[5,3,7],[8,2,6]], limits = [2,2], k = 3

Output: 21

Explanation:

Constraints:

Solution

import java.util.Arrays;

public class Solution {
    public long maxSum(int[][] grid, int[] limits, int k) {
        int l = 0;
        for (int limit : limits) {
            l += limit;
        }
        int[] dp = new int[l];
        int a = 0;
        for (int i = 0; i < grid.length; i++) {
            int lim = limits[i];
            Arrays.sort(grid[i]);
            for (int j = grid[i].length - lim; j < grid[i].length; j++) {
                dp[a] = grid[i][j];
                a++;
            }
        }
        Arrays.sort(dp);
        long sum = 0L;
        for (int i = l - 1; i >= l - k; i--) {
            sum += dp[i];
        }
        return sum;
    }
}