#15. 最长不重复子序列

最长不重复子序列

给定一个长度为 nn 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。

输入格式

第一行包含整数 nn

第二行包含 nn 个整数(均在 01050 \sim 10^5 范围内),表示整数序列。

输出格式

共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。

数据范围

1n1051 \le n \le 10^5

输入样例:

5
1 2 2 3 5

输出样例:

3

数据 1(样例风格):基础正确性。

数据 2(n=1):卡边界处理(初始化/输出)。

数据 3(全相同):卡错误返回 0、或窗口更新逻辑错误(应为 1)。

数据 4(全不重复):卡 off-by-one(应输出 n),以及错误地认为必须出现重复才更新。

数据 5(大量相邻重复):卡“只遇到重复就把 l++ 一次”这种错法(需要正确移动到重复元素上一次出现位置之后)。

数据 6(重复值相隔很远):卡“只用 set 但不记录上次位置/移动 l 不够远”导致答案偏大或偏小。

数据 7(重复值多次出现,且有些重复在窗口左边界之外):专门卡错误写法:l = last[x] + 1 但不判断 last[x] >= l,导致 l 被错误回退/乱跳。

数据 8(同一元素多次重复穿插):卡 set 方案“删除不彻底/没用 while 循环移除直到无重复”,以及窗口更新不正确。

数据 9(含 0 和 100000 等边界值):卡值域边界、数组开小/哈希处理不当等。

数据 10(n=1e5 大数据,周期重复,答案=50000):强力卡复杂度:O(n^2) 暴力/每次重置 set 会 TLE;也卡实现细节在大数据下崩溃。