#2099

Find Subsequence of Length K With the Largest Sum

Easy
ArrayHash TableSortingHeap (Priority Queue)SortingGreedy Algorithms
LeetCode ↗

Approaches

Brute ForceOptimal
Complexity Comparison
Brute ForceOptimal Solution
Time
O(n²)
O(n log n)
Space
O(1)
O(n)
💡

Intuition

Time O(n log n)Space O(n)

To find the largest sum subsequence of length k, we can sort the array and select the largest k elements. This is efficient because we are directly targeting the elements that contribute to the maximum sum.

⚙️

Algorithm

3 steps
  1. 1Step 1: Sort the array while keeping track of the original indices.
  2. 2Step 2: Select the largest k elements from the sorted array.
  3. 3Step 3: Sort the selected elements based on their original indices to maintain the subsequence order.
solution.py6 lines
1def max_sum_subsequence(nums, k):
2    indexed_nums = list(enumerate(nums))
3    indexed_nums.sort(key=lambda x: x[1], reverse=True)
4    top_k = indexed_nums[:k]
5    top_k.sort(key=lambda x: x[0])
6    return [num for index, num in top_k]

Complexity note: The sorting step dominates the time complexity, making it O(n log n). The space complexity is O(n) due to storing the indexed elements.

  • 1Sorting the array helps in efficiently finding the largest elements.
  • 2Maintaining the original indices is crucial to ensure the subsequence order.

Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.