Back to all solutions

#2099 - Find Subsequence of Length K With the Largest Sum

Problem Description

You are given an integer array nums and an integer k. You want to find a subsequence of nums of length k that has the largest sum.

Return any such subsequence as an integer array of length k.

A subsequence is an array that can be derived from another array by deleting some or no elements without changing the order of the remaining elements.

Solution

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number[]}
 */
var maxSubsequence = function(nums, k) {
  const map = new Map();
  nums.slice()
      .sort((a, b) => a - b)
      .slice(-k)
      .forEach(n => map.set(n, (map.get(n) || 0) + 1));

  return nums.filter(n => {
    const isInSubsequence = map.get(n);

    if (isInSubsequence) {
      map.set(n, map.get(n) - 1);
    }

    return isInSubsequence;
  });
};