799. 最长连续不重复子序列
首先模拟样例 12235 (子序列)(连续)(不重复)
子序列很多,其中连续不重复的有1,12,2,23,235,3,35,3,最长的就是235
暴力做法:
for(int i = 0;i<n;i++)//i是终点
for(int j = 0;j<=i;j++)
//j是起点,j的含义是往左最远到什么地方,j从0开始往右边靠近,直到到满足条件的最左端
{
if(check(j,i))//满足条件的
{
res = max(res,i-j+1);//j-i+1字符串长度
}
}
799. 最长连续不重复子序列
#include <iostream>
using namespace std;
const int N = 100010;
int a[N],s[N];//s[i]记录每个数出现多少次
int main()
{
int n;
cin>>n;
int res = 0;
for(int i = 0;i<n;i++) cin>>a[i];
//遍历序列
for(int i = 0,j = 0;i<n;i++)
{
s[a[i]]++;
while(j<=i && s[a[i]]>1)
{
s[a[j]]--;//数字的出现次数也改变
j++; //j指针移动(先变j不变时的s[j],再变j)
}
res = max(res,i-j+1);
}
cout<<res;
return 0;
}