AcWing 799. 最长连续不重复子序列JAVA
原题链接
简单
作者:
理想二旬.
,
2021-05-03 20:20:52
,
所有人可见
,
阅读 232
JAVA 代码
import java.util.Scanner;
import java.io.BufferedInputStream;
class Main{
static int N = 100010;
static int[] a = new int[N];
//空间换时间,开辟新数组用于统计重复数据
static int[] s = new int[N];
public static void main(String[] args){
Scanner in = new Scanner(new BufferedInputStream(System.in));
int n = in.nextInt();
for(int i = 0; i < n; i++){
a[i] = in.nextInt();
}
int res = 0;
//双指针
for(int i = 0, j = 0; i < n; i++){
//出现一次数据就加一,若重复了就大于1
s[a[i]]++;
while(s[a[i]] > 1){
//左指针一点点遍历,可以发现和前面哪个元素重了。
s[a[j]]--;
j++;
}
res = max(res, i - j + 1);
}
System.out.print(res);
}
public static int max(int i, int j){
return i > j ? i : j;
}
}