目录
2. Sliding Windows Optimization
3.1 substring without repeating characters
1. Algorithm Analysis
- Create a window [left, right)
- Increasing right edge to expand the window and update the matching results
- if the window big enough, increasing left edge to shrink the window and update the result
- Repeat step 2 and 3, until right edge reach end of input
1.1 Implementation Template
vector<int> letter(128,0);
for(auto c:target) {
letter[c]++;
}
int l = 0, r = 0;
int matched = 0;
while(r < input.size()) {
char c = input[r++]; //expend the window
if(letter[c] > 0)
matched++;
letter[c]--; // non target char will be negative
if(r-l == target.size()) { //condition to shrink the window
if(matched == target.size())
ans.push_back();
//shrink window
if(letter[input[l++]++ > 0)
matched--;
}
}
return and;
1.2 Usual question variation
1.2.1 longest subarray or substring
1.2.2 shortest subarray or substring
1.2.3 max/min median in a fixed window
本文详细介绍滑动窗口算法的基本原理及其在不同场景中的应用。包括如何创建窗口、调整窗口大小来更新匹配结果,适用于寻找最长或最短子串、子数组等问题。文章还提供了实现模板,并讨论了算法的时间复杂度。
1906

被折叠的 条评论
为什么被折叠?



