2099. Find Subsequence of Length K With the Largest Sum
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.
Example 1:
Input: nums = [2,1,3,3], k = 2 Output: [3,3] Explanation: The subsequence has the largest sum of 3 + 3 = 6.
Example 2:
Input: nums = [-1,-2,3,4], k = 3 Output: [-1,3,4] Explanation: The subsequence has the largest sum of -1 + 3 + 4 = 6.
Example 3:
Input: nums = [3,4,3,3], k = 2 Output: [3,4] Explanation: The subsequence has the largest sum of 3 + 4 = 7. Another possible subsequence is [4, 3].
Constraints:
1 <= nums.length <= 1000-105 <= nums[i] <= 1051 <= k <= nums.length
Solutions
Solution 1: Sorting
Thinking
Maximum sum with original order means the \(k\) largest values, then sorted by index. \(n \le 1000\), so sort indices by value.
Keep the last \(k\) indices and emit nums in increasing index order.
First, we create an index array \(\textit{idx}\), where each element is an index of the array \(\textit{nums}\). Then, we sort the index array \(\textit{idx}\) based on the values in \(\textit{nums}\), with the sorting rule being \(\textit{nums}[i] < \textit{nums}[j]\), where \(i\) and \(j\) are two indices in the index array \(\textit{idx}\).
After sorting, we take the last \(k\) elements of the index array \(\textit{idx}\). These \(k\) elements correspond to the largest \(k\) elements in the array \(\textit{nums}\). Then, we sort these \(k\) indices to get the order of the largest \(k\) elements in the array \(\textit{nums}\).
The time complexity is \(O(n \log n)\), and the space complexity is \(O(\log n)\). Here, \(n\) is the length of the array.
1 2 3 4 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |