LeetCode solutions

2954. Maximum Sum of Almost Unique Subarray

My accepted Python solution to LeetCode problem 2954, Maximum Sum of Almost Unique Subarray, running in 103ms.

  • Difficulty: Medium
  • Python
  • Runtime 103ms
  • Memory 21.3MB

Read the problem on LeetCode View on GitHub

Python

Accepted on LeetCode — runtime 103ms, memory 21.3MB, accepted 2026-01-01.

python
class Solution:
    def maxSum(self, nums: List[int], m: int, k: int) -> int:
        from collections import defaultdict
        
        n = len(nums)
        if n < k:
            return 0
        
        freq = defaultdict(int)
        distinct = 0
        window_sum = 0
        max_sum = 0
        
        # Initialize first window
        for i in range(k):
            if freq[nums[i]] == 0:
                distinct += 1
            freq[nums[i]] += 1
            window_sum += nums[i]
        
        if distinct >= m:
            max_sum = window_sum
        
        # Slide window
        for i in range(k, n):
            # Add new element
            if freq[nums[i]] == 0:
                distinct += 1
            freq[nums[i]] += 1
            window_sum += nums[i]
            
            # Remove old element
            old = nums[i - k]
            freq[old] -= 1
            if freq[old] == 0:
                distinct -= 1
            window_sum -= old
            
            if distinct >= m:
                max_sum = max(max_sum, window_sum)
        
        return max_sum

Source