做韩国网站有哪些东西吗,做贷款网站犯法吗,云南建设工程信息服务平台,国内网建公司排名⭐简单说两句⭐ ✨ 正在努力的小新~ #x1f496; 超级爱分享#xff0c;分享各种有趣干货#xff01; #x1f469;#x1f4bb; 提供#xff1a;模拟面试 | 简历诊断 | 独家简历模板 #x1f308; 感谢关注#xff0c;关注了你就是我的超级粉丝啦#xff01;  超级爱分享分享各种有趣干货  提供模拟面试 | 简历诊断 | 独家简历模板  感谢关注关注了你就是我的超级粉丝啦  以下内容仅对你可见~ 作者后端小知识CSDN后端领域新星创作者 |阿里云专家博主 CSDN个人主页后端小知识 GZH后端小知识 欢迎关注点赞收藏⭐️留言 亲爱的友友们欢迎观看今天的讲解今天我们要讲解一个简单的优化算法这个算法在各大比赛蓝桥杯PTA-天梯赛ICPC-ACM等中都有涉及而且这个算法非常简单想不想知道涅~ 好啦咱也不卖关子了这个算法就是 - 双指针算法 
理论 
我们还是来看看理论知识哟 理论 双指针算法是一种在计算机科学中常用的算法策略它通过使用两个指针来遍历数组或序列以解决特定的问题。这种算法通常用于解决那些需要在数据结构中找到特定模式或满足特定条件的元素的问题比如找到两个元素使得它们加起来等于目标值、在有序数组中找到最接近的一对数等。 
双指针算法的关键在于理解数据结构的性质如排序以及如何通过移动指针来有效地遍历和解决问题。这种算法在面试和算法竞赛中非常常见因为它简洁且高效。 
理论看着是不是有点小枯燥吖我们来看个例子实践下吧 例子 
下面我们开始实践环节 
我们这个题是选自Acwing上面的模板题额~ 
我也直接给家人们要来了贴心吧❤️最长连续不重复子序列 
我们先来看看题目 这个题目的意思是非常简单的我们看下这个样例吧 连续不重复的子序列是 2 3 5长度为3所以输出为3 那么我们怎么去做呢 思路 【Tips】注意啦我们不能采用最直接的双重循环的暴力做法因为n^2的复杂度会TLE超时的 
我们采用双指针的做法 我们定义两个指针分别是 i 和 j i为右指针j为左指针  我们在定义一个用于计数的数组b b数组用于统计每个数出现的次数  如果b数组中出现了值大于1的那么表示出现了重复的那么我们需要先将b数组中 [ j , i ) 之间的数都计数为0我们直接减减就可以设为0重新统计  定义一个ans用于记录 ans  max(ans,i-j1)  
Ok我们下面来看看AC的代码可以更好的理解 AC代码清单 #includebits/stdc.h
using namespace std;
int n;
int a[100010];
int b[100010];
int main(){//用于输入输出加速这个可忽略ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cinn;for(int i1;in;i){cina[i];}int ans0;for(int i1,j1;in;i){b[a[i]];//计数数组bwhile(b[a[i]]1){//出现了重复的将b数组中 [ j , i ) 之间的数都计数为0b[a[j]]--;j;}ansmax(ans,i-j1);//更新答案}coutans;return 0;
}为了方便友友们观看我也截图贴过来了 好咯这次的分享就到这里我们后续再分享几个双指针算法的题目友友们可以期待下~ 
这个代码也是非常简单大家如果疑问❓的话可以在评论区留言哟 
【都看到这了点点赞点点关注呗爱你们】 ✨ 正在努力的小新~  超级爱分享分享各种有趣干货  提供模拟面试 | 简历诊断 | 独家简历模板  感谢关注关注了你就是我的超级粉丝啦  以下内容仅对你可见~ 
作者后端小知识CSDN后端领域新星创作者 | 阿里云专家博主 
CSDN个人主页后端小知识 
GZH后端小知识 
欢迎关注点赞收藏⭐️留言