|
题目描述:给定一个数组arr(1≤n≤10^5),返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同)。
示例1
输入:[2,3,4,5]
输出:4
示例2
输入:[2,2,3,4,3]
输出:3
代码实现:
import java.util.*;
public class Solution {
public int maxLength (int[] arr) {
int[] last = new int[100000];
int n = arr.length;
int res = 0;
int start = 0; // 窗口开始位置
for(int i = 0; i < n; i++) {
int index = arr[i];
start = Math.max(start, last[index]);
res = Math.max(res, i - start + 1);
last[index] = i+1;
}
return res;
}
}
|
|