题解 | #最长无重复子数组#滑动窗口思路
最长无重复子数组
http://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4
public class Solution {
/**
*
* @param arr int整型一维数组 the array
* @return int整型
*/
public int maxLength (int[] arr) {
// write code here
int i = 0;
int j = 0;
int maxlen = 0;
int[] map = new int[100000];
Arrays.fill(map,-1);
while(j<arr.length){
if(map[arr[j]]==-1){
map[arr[j]] = j;
maxlen=Math.max(maxlen,j-i+1);
}else{
if(map[arr[j]]>=i){
i = map[arr[j]]+1;//窗口左边收缩
}
map[arr[j]] = j;
maxlen=Math.max(maxlen,j-i+1);
}
j++;//窗口右边拓展
}
//System.out.println(map[3]);
return maxlen;
}
}