双指针

似乎比较useless,暂时就浅尝辄止

1|0概述

找到答案的单调性,把原来多重循环嵌套 O(n2) 的枚举优化成双指针维护的 O(n) 枚举。

//暴力 for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { todo; } //双指针 for (int i = 0; j = 0; i < n; i++) { while(j < n && check(i, j)) j++; }

2|0寻找单词

//input I am lyh //output I am lyh
int main() { char str[1000]; gets(str); for (int i = 0; str[i]; i++) { int j = i;//i 为单词开头,j 为单词末尾 while(j < n && str[j] != ' ') j++; for (int k = i; k < j; k++) cout << str[k]; cout << endl; i = j; } return 0; }

3|0最长连续不重复子序列

//input 1 2 2 3 5 //output 3
int main() { cin >> n; for (int i = 0; i < n; i++) cin >> a[i]; int res = 0; for (int i = 0, j = 0; i < n; i++) { cnt[a[i]]++; while(cnt[a[i]] > 1) {//直到j和i之间没有重复元素为止 cnt[a[j]]--; j++; } res = max(res, i - j + 1); } cout << res << endl; return 0; }

__EOF__

本文作者Kdlyh
本文链接https://www.cnblogs.com/kdlyh/p/17992998.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   加固文明幻景  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示