双指针

6.双指针算法

最长连续不重复子序列

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210518163100630.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MzAzNzM3OQ==,size_16,color_FFFFFF,t_70#pic_center)

输入样例:

5
1 2 2 3 5

输出样例:

3

模板:

//最长连续不重复子序列
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 100010;
int n;
int a[N],s[N];
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++){  //操作有点巧妙 
		s[a[i]]++;
		while(s[a[i]]>1){
			s[a[j]]--;
			j++;
		}
		res=max(res,i-j+1);
		
	}
	cout<<res<<endl;
	return 0; 
}

 


数组元素的目标和

 

posted @ 2022-03-22 00:46  panse·  阅读(20)  评论(0)    收藏  举报