# LC 2461. Maximum Sum of Distinct Subarrays With Length K ### [Problem link](https://leetcode.com/problems/maximum-sum-of-distinct-subarrays-with-length-k/) ###### tags: `leedcode` `medium` `c++` `Sliding Window` You are given an integer array <code>nums</code> and an integer <code>k</code>. Find the maximum subarray sum of all the subarrays of <code>nums</code> that meet the following conditions: - The length of the subarray is <code>k</code>, and - All the elements of the subarray are **distinct** . Return the maximum subarray sum of all the subarrays that meet the conditions. If no subarray meets the conditions, return <code>0</code>. A **subarray** is a contiguous non-empty sequence of elements within an array. **Example 1:** ``` Input: nums = [1,5,4,2,9,9,9], k = 3 Output: 15 Explanation: The subarrays of nums with length 3 are: - [1,5,4] which meets the requirements and has a sum of 10. - [5,4,2] which meets the requirements and has a sum of 11. - [4,2,9] which meets the requirements and has a sum of 15. - [2,9,9] which does not meet the requirements because the element 9 is repeated. - [9,9,9] which does not meet the requirements because the element 9 is repeated. We return 15 because it is the maximum subarray sum of all the subarrays that meet the conditions ``` **Example 2:** ``` Input: nums = [4,4,4], k = 3 Output: 0 Explanation: The subarrays of nums with length 3 are: - [4,4,4] which does not meet the requirements because the element 4 is repeated. We return 0 because no subarrays meet the conditions. ``` **Constraints:** - <code>1 <= k <= nums.length <= 10<sup>5</sup></code> - <code>1 <= nums[i] <= 10<sup>5</sup></code> ## Solution 1 - Sliding Window #### C++ ```cpp= class Solution { public: long long maximumSubarraySum(vector<int>& nums, int k) { long ans = 0; long sum = 0; unordered_map<int, int> freq; for (int i = 0; i < nums.size(); i++) { sum += nums[i]; freq[nums[i]]++; if (i < k - 1) { continue; } if (freq.size() == k) { ans = max(ans, sum); } sum -= nums[i - k + 1]; if (--freq[nums[i - k + 1]] == 0) { freq.erase(nums[i - k + 1]); } } return ans; } }; ``` >### Complexity >| | Time Complexity | Space Complexity | >| ----------- | --------------- | ---------------- | >| Solution 1 | O(n) | O(1) | ## Note x