Leetcode 2461. Maximum Sum of Distinct Subarrays With Length K
class Solution {
public:
long long maximumSubarraySum(vector<int>& nums, int k) {
int n = nums.size();
if (n < k) return 0;
if (k == 1) return *std::max_element(nums.begin(), nums.end());
int left_ptr = 0;
long long res = 0;
long long max_sum = nums.front();
unordered_set<int> visited;
visited.insert(nums.front());
for (int right_ptr = 1; right_ptr < n; right_ptr++) {
while (visited.count(nums[right_ptr])) {
max_sum -= nums[left_ptr];
visited.erase(nums[left_ptr]);
left_ptr++;
}
visited.insert(nums[right_ptr]);
max_sum += nums[right_ptr];
if (right_ptr - left_ptr + 1 == k) {
res = max(res, max_sum);
max_sum -= nums[left_ptr];
visited.erase(nums[left_ptr]);
left_ptr++;
}
}
return res;
}
};
Last updated
Was this helpful?