#2813

Maximum Elegance of a K-Length Subsequence

Hard
ArrayHash TableStackGreedySortingHeap (Priority Queue)Hash MapArray
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)

The optimal approach involves sorting the items by profit and using a greedy strategy to select the top profits while maximizing distinct categories. This reduces the number of combinations we need to consider.

⚙️

Algorithm

4 steps
  1. 1Step 1: Sort the items in descending order based on profit.
  2. 2Step 2: Use a min-heap to track the selected items and ensure we only keep k items.
  3. 3Step 3: Calculate the total profit and distinct categories from the selected items.
  4. 4Step 4: If the number of selected items is less than k, add items from the heap to maximize categories.
solution.py20 lines
1# Full working Python code
2import heapq
3
4def maxElegance(items, k):
5    items.sort(key=lambda x: -x[0])  # Sort by profit descending
6    total_profit = 0
7    distinct_categories = set()
8    min_heap = []
9
10    for profit, category in items:
11        heapq.heappush(min_heap, (profit, category))
12        total_profit += profit
13        distinct_categories.add(category)
14        if len(min_heap) > k:
15            removed = heapq.heappop(min_heap)
16            total_profit -= removed[0]
17            distinct_categories.remove(removed[1])
18
19    elegance = total_profit + len(distinct_categories) ** 2
20    return elegance

Complexity note: The time complexity is O(n log n) due to sorting the items. The space complexity is O(n) for storing the items and the distinct categories.

  • 1Sorting items by profit helps prioritize high-value selections.
  • 2Using a min-heap allows efficient management of the top k items.

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