算法学习--滑动窗口篇

通用结构(暂时)

int function(vector<int>& nums) {//该题为找到最大不重复子数组和
        int n = nums.size();
        int res = 0;//最终结果
        int curRes = 0;//当前的总和
        int start = 0;//最左边的位置,条件不符时不断剔除最左边元素直到条件符合
        unordered_set<int> uset;//记录出现过的元素,一般用于解决不重复问题
        for (int num : nums) {
            while(uset.contains(num)){//任何条件,去除左边的元素直到条件符合,
                uset.erase(nums[start]);//具体的逻辑,视不同题目改变
                curRes -= nums[start];
                start++;
            }
            uset.insert(num);
            curRes += num;
            res = max(res,curRes);//不断比较最大结果和当前结果
            
        }
        return res;
    }

总结:设置一个条件,记录开始的位置,不断加入元素,条件不符合后从开始的位置剔除元素直到符合,将最大结果和当前结果不断比较。

posted @ 2025-07-22 10:27  哒令,哒哒哒哒哒~令  阅读(8)  评论(0)    收藏  举报