双指针(同向双指针)

145 字
1 分钟
双指针(同向双指针)
  • 核心思想 right 一直往右走(不回退) left 只在“窗口非法”时被迫右移(也不回退)
  • 时间优化:两层for->一层while;
  • 模板(最长合法窗口)
int left = 0, ret = 0;
unordered_map<int,int> mp; // 计数器,视题意更换
for (int right = 0; right < n; ++right) {
// 1. 进窗口
mp[a[right]]++;
// 2. 判断合法性
while (mp[a[right]] > 1) { // 出现重复,非法
// 3. 出窗口
mp[a[left]]--;
left++;
}
// 4. 更新答案
ret = max(ret, right - left + 1);
}
  • 常见题型
  1. 最长无重复子串
  2. 最长至多k个重复子串

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Profile Image of the Author
HandlerOne
おかえり
公告
本站已整理 138 篇技术笔记,并按 8 条主线排成学习路线(141 站);站内搜索与桌宠对话均已上线。
分类
标签
最新动态
站点统计
文章
138
分类
12
标签
42
总字数
597,044
站点信息
构建平台
腾讯云 · Nginx
博客版本
v6.16.8

当前页面没有目录

文章目录

当前页面没有目录