Imagine you're playing a strategic game with a matrix of numbers! ๐ŸŽฏ

You are given a 0-indexed 2D integer array nums. Your task is to repeatedly perform operations until the matrix becomes empty, accumulating a score along the way.

Here's how the game works:

  1. Selection Phase: From each row in the matrix, select and remove the largest number. If there's a tie, you can pick any of the tied numbers.
  2. Scoring Phase: Among all the numbers you just removed, find the highest one and add it to your score.
  3. Repeat: Continue until the matrix is completely empty.

Goal: Return the final accumulated score after all operations.

Example: If you have [[7,2,1],[6,4,2],[6,5,3,3]], in the first round you'd remove [7,6,6] and add max(7,6,6) = 7 to your score!

Input & Output

example_1.py โ€” Basic Case
$ Input: nums = [[7,2,1],[6,4,2],[6,5,3,3]]
โ€บ Output: 15
๐Ÿ’ก Note: Round 1: Remove max from each row: [7,6,6], winner = 7. Round 2: Remove max from remaining: [2,4,5], winner = 5. Round 3: Remove max: [1,2,3], winner = 3. Round 4: Only one element left: [3], winner = 3. But wait - the third row has 4 elements initially, so Round 4 has winner = 3. Total: 7 + 5 + 3 + 3 = 15.
example_2.py โ€” Simple Case
$ Input: nums = [[1]]
โ€บ Output: 1
๐Ÿ’ก Note: Only one element in the matrix, so the score is just that element: 1.
example_3.py โ€” Uniform Rows
$ Input: nums = [[1,2,3],[4,5,6],[7,8,9]]
โ€บ Output: 24
๐Ÿ’ก Note: Round 1: max(3,6,9) = 9. Round 2: max(2,5,8) = 8. Round 3: max(1,4,7) = 7. Total: 9 + 8 + 7 = 24.

Visualization

Tap to expand
๐Ÿ† Matrix Tournament - Optimal StrategyPhase 1: Team Preparation (Sorting)Team A:721Team B:642Team C:653Phase 2: Tournament RoundsRound 1:766Winner: 7Round 2:245Winner: 5Round 3:123Winner: 3Final Tournament Score15๐ŸŽฏ Key Optimization InsightInstead of searching for the best player in each team every round (expensive!),we pre-arrange each team by skill level. Now finding the best available playeris instant - just pick the next one in line!Time Complexity Improvement: O(mยฒ ร— nยฒ) โ†’ O(m ร— n log n)Perfect example of trading a small upfront cost (sorting) for massive ongoing savings!
Understanding the Visualization
1
Team Preparation
Each team sorts their players by skill level (descending order)
2
Round 1
Each team sends their strongest player - find the tournament winner
3
Round 2
Each team sends their next strongest player - find the winner
4
Continue
Repeat until all players have competed
5
Final Score
Sum up all the round winners' skill levels
Key Takeaway
๐ŸŽฏ Key Insight: Pre-sorting each row transforms expensive repeated searches into constant-time array accesses, dramatically improving performance from quadratic to linearithmic time complexity.

Time & Space Complexity

Time Complexity
โฑ๏ธ
O(m ร— n log n)

Sorting each of the m rows takes O(n log n) time, and then processing takes O(m ร— n) time, so total is O(m ร— n log n)

n
2n
โšก Linearithmic
Space Complexity
O(1)

Sorting is done in-place, and we only use constant extra space for variables

n
2n
โœ“ Linear Space

Constraints

  • 1 โ‰ค nums.length โ‰ค 50
  • 1 โ‰ค nums[i].length โ‰ค 50
  • 1 โ‰ค nums[i][j] โ‰ค 103
  • Matrix rows can have different lengths
Asked in
Google 23 Amazon 18 Meta 15 Microsoft 12
28.2K Views
Medium Frequency
~12 min Avg. Time
847 Likes
Ln 1, Col 1
Smart Actions
๐Ÿ’ก Explanation
AI Ready
๐Ÿ’ก Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen