通用结构(暂时)
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;
}
总结:设置一个条件,记录开始的位置,不断加入元素,条件不符合后从开始的位置剔除元素直到符合,将最大结果和当前结果不断比较。