双指针 左指针 右指针 HashMap保存数据 在HashMap没有重复数据的情况下 使用迭代右指针一直右移 遇到重复数据右移终止
遍历左指针 左指针挨个左移
滑动窗口思想
public class Solution {
/**
*
* @param arr int整型一维数组 the array
* @return int整型
*/
public int maxLength (int[] arr) {
// write code here
if(arr == null || arr.length == 0){
return 0;
}
Map<Integer,Integer> map = new HashMap<>();
// int left = 0;
int right = 0;
int m = arr.length;
int len = 0;
for(int left =0;left<m;left++){
if(left!=0){
Integer temp = arr[left-1];
map.remove(temp,left-1);
}
while(right<m&&(!map.containsKey(arr[right]))){
Integer temp = arr[right];
map.put(temp,right);
len = Math.max(len ,right-left+1);
right++;
}
}
return len;
}
}