import java.util.*;


public class Solution {
    /**
     * 
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        // write code here
        int len = arr.length;
        if(len <= 1){
            return len;
        }
        // 双指针
        int p = 0;
        int q = 0;
        int max = 0;
        HashMap<Integer, Integer> map = new HashMap<>();
        while(q!=len && p!=len){
            if(map.containsKey(arr[q])){
                if(max < map.keySet().size()){
                    max = map.keySet().size();
                }
                map = new HashMap<>();
                p++;
                // 重新定位双指针位置
                q = p;
            }
            map.put(arr[q], 0);
            q++;
        }
        return max == 0 ? len: max;
    }
}