Skip to content
Rain Hu's Workspace
Go back

[LeetCode] 2461. Maximum Sum of Distinct Subarrays With Length K

Rain Hu
class Solution {
public:
    long long maximumSubarraySum(vector<int>& nums, int k) {
        int n = nums.size();
        unordered_map<int, int> cnt;
        long long sum = 0;
        int valid = 0;
        for (int i = 0; i < k; i++) {
            sum += nums[i];
            if (cnt[nums[i]]++ == 0) valid++;
        }
        long long res = valid == k ? sum : 0;
        for (int i = k; i < n; i++) {
            sum += (nums[i] - nums[i-k]);
            if (cnt[nums[i]]++ == 0) valid++;
            if (--cnt[nums[i-k]] == 0) valid--;
            if (valid == k) res = max(res, sum);
        }
        return res;
    }
};

Share this post on:

Previous
[LeetCode] 1423. Maximum Points You Can Obtain from Cards
Next
[LeetCode] 2841. Maximum Sum of Almost Unique Subarray