3428. Maximum and Minimum Sums of at Most Size K Subsequences - Detailed Explanation
Problem Statement
You’re given an integer array nums and an integer k. A subsequence of nums is any sequence you can form by deleting zero or more elements without changing the relative order of the remaining elements. You want two values:
- The maximum sum obtainable by any subsequence of size at most k.
- The minimum sum obtainable by any subsequence of size at most k.
Return an array [maxSum, minSum] containing these two values.
Examples
Example 1
Input:  nums = [3, -1, 4, -2, 5], k = 3
Output: [12, -3]
Explanation:
  For maxSum, pick the three largest positives [5,4,3] → sum = 12
  For minSum, pick the two most negative [-2,-1] (you could pick up to 3 but adding 3rd positive would increase sum) → sum = -3
Example 2
Input:  nums = [-5, -2, -3, -4], k = 2
Output: [-7, -9]
Explanation:
  For maxSum, pick at most 2 elements: two “largest” negatives are [-2,-3] → sum = -5? Actually we can pick zero to get 0 which is larger than any negative, so maxSum = 0.
  For minSum, pick the two smallest [-5,-4] → sum = -9
Example 3
Input:  nums = [1,2,3], k = 5
Output: [6, 0]
Explanation:
  You can pick all three positives for maxSum → 6
  For minSum, best is to pick no elements (sum = 0) rather than any positive
Constraints
- 1 ≤ nums.length ≤ 10⁵
- -10⁹ ≤ nums[i] ≤ 10⁹
- 1 ≤ k ≤ nums.length
Hints
- Since a subsequence may skip elements arbitrarily, ordering doesn’t matter—only the values.
- To maximize a sum with up to kelements, you only ever want to pick the largest positive values (or pick none if all are non‑positive).
- To minimize a sum with up to kelements, you only ever want to pick the smallest negative values (or pick none if all are non‑negative).
- Sorting the array (or using selection algorithms/heaps to find the top‑k) lets you compute both answers in O(n log n) or O(n + k log n).
Approach
1. Sort and Greedy Pick
- Sort numsin descending order.
- MaxSum:
- Initialize maxSum = 0,count = 0.
- Iterate from the largest down, adding nums[i]tomaxSumif it’s positive andcount < k.
- Stop early if you hit zero or negative or have picked k elements.
 
- Initialize 
- MinSum:
- Initialize minSum = 0,count = 0.
- Iterate from the smallest up (i.e. sort in ascending or traverse the end of descending), adding nums[i]tominSumif it’s negative andcount < k.
- Stop when you hit zero or positive or have picked k elements.
 
- Initialize 
- Return [maxSum, minSum].
2. Selection via Heaps (O(n + k log n))
- Maintain a max‑heap of all negative numbers (to pick the ksmallest).
- Maintain a min‑heap of all positive numbers (to pick the klargest).
- Pop up to ktimes from each heap, summing as appropriate; skip popping if the top worsens the objective (e.g. don’t pop a positive when minimizing).
Step‑by‑Step Walkthrough (Example 1)
nums = [3, -1, 4, -2, 5], k = 3
Sorted descending → [5,4,3,-1,-2]
Compute maxSum:
  pick 5 → maxSum=5, cnt=1
  pick 4 → maxSum=9, cnt=2
  pick 3 → maxSum=12, cnt=3 → reached k, stop
Compute minSum:
  traverse from the back of sorted descending (i.e. ascending): [-2,-1,3,4,5]
  pick -2 → minSum=-2, cnt=1
  pick -1 → minSum=-3, cnt=2
  cnt=2<k=3 but next is +3, stop (adding makes sum larger)
Result → [12, -3]
Complexity Analysis
- Time:
- Sorting takes O(n log n).
- One linear pass to accumulate picks.
- Overall: O(n log n).
 
- Space: O(1) extra beyond the input (or O(n) if your sort isn’t in‑place).
Python Code
Python3
Python3
. . . .
Java Code
Java
Java
. . . .
Edge Cases
- All non‑positives: MaxSum should be 0 (pick none).
- All non‑negatives: MinSum should be 0 (pick none).
- k larger than count of beneficial elements: stop early without filling to k.
- Duplicates and zeros: zeros don’t change the sum—can pick or skip arbitrarily.
Common Mistakes
- Forgetting you can pick fewer than k. Always allow “stop early” when the next candidate hurts your objective.
- Trying to pick exactly kelements even when some have the wrong sign.
- Mixing up ascending vs. descending order when computing min and max sums.
Alternative Variations
- Exact‑k subsequence sum: require you pick exactly k, even if some reduce the objective.
- Contiguous subarray version: find maximum/minimum sums of any subarray (not subsequence) up to length k—solved by sliding‑window or deque techniques.
Related Problems
TAGS
leetcode
CONTRIBUTOR
Design Gurus Team
-
GET YOUR FREE
Coding Questions Catalog
Boost your coding skills with our essential coding questions catalog.
Take a step towards a better tech career now!
Explore Answers
2425. Bitwise XOR of All Pairings - Detailed Explanation
Learn to solve Leetcode 2425. Bitwise XOR of All Pairings with multiple approaches.
1274. Number of Ships in a Rectangle - Detailed Explanation
Learn to solve Leetcode 1274. Number of Ships in a Rectangle with multiple approaches.
1422. Maximum Score After Splitting a String - Detailed Explanation
Learn to solve Leetcode 1422. Maximum Score After Splitting a String with multiple approaches.
2773. Height of Special Binary Tree - Detailed Explanation
Learn to solve Leetcode 2773. Height of Special Binary Tree with multiple approaches.
381. Insert Delete GetRandom O(1) - Duplicates allowed - Detailed Explanation
Learn to solve Leetcode 381. Insert Delete GetRandom O(1) - Duplicates allowed with multiple approaches.
694. Number of Distinct Islands - Detailed Explanation
Learn to solve Leetcode 694. Number of Distinct Islands with multiple approaches.
Related Courses
Grokking the Coding Interview: Patterns for Coding Questions
Grokking the Coding Interview Patterns in Java, Python, JS, C++, C#, and Go. The most comprehensive course with 476 Lessons.
4.6
(69,299 learners)
$197
New

Grokking Modern AI Fundamentals
Master the fundamentals of AI today to lead the tech revolution of tomorrow.
3.9
(1,107 learners)
$78
Grokking Data Structures & Algorithms for Coding Interviews
Unlock Coding Interview Success: Dive Deep into Data Structures and Algorithms.
4
(26,683 learners)
$78
One-Stop Portal For Tech Interviews.
Copyright © 2025 Design Gurus, LLC. All rights reserved.