LeetCode 2461 长度为 K 子数组最大和

LeetCode 2461 长度为 K 子数组最大和

🟡 中等

https://leetcode.cn/problems/maximum-sum-of-distinct-subarrays-with-length-k/description/

使用 hash_map 记录 value:count

直接使用 hash_map[nums[i]]++; 完成插入和递增操作。

class Solution {

public:

    long long maximumSubarraySum(vector<int>& nums, int k) {

        if (k > nums.size()) return 0;

        unordered_map<int, int> hash_map; // 用于存储元素及其出现次数

        long long sum = 0;

        long long max_sum = 0;

  

        // 初始化窗口

        for (int i = 0; i < k; i++) {

            hash_map[nums[i]]++;

            sum += nums[i];

        }

  

        // 检查初始化窗口

        if (hash_map.size() == k) {

            max_sum = sum;

        }

  

        // 滑动窗口

        for (int i = k; i < nums.size(); i++) {

            // 新元素进入窗口

            hash_map[nums[i]]++;

            sum += nums[i];

  

            // 最左边元素出窗口

            hash_map[nums[i - k]]--;

            sum -= nums[i - k];

  

            if (hash_map[nums[i - k]] == 0) {

                hash_map.erase(nums[i - k]);

            }

  

            // 检查当前窗口

            if (hash_map.size() == k) {

                max_sum = max(max_sum, sum);

            }

        }

  

        return max_sum;

    }

};