双指针 左指针 右指针 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;
    }
}