import java.util.*;


public class Solution {
    /**
     * 
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        // write code here
        HashMap<Integer, Integer> hash = new HashMap<>();
        int max = 0;
        int i = 0, j = 0;
        for (; i < arr.length; i++) {
            //
            if(hash.containsKey(arr[i])) {
                //如果发现重复元素,将j的值进行更新,更新原理为:始终让j指向重复值的下一个元素
                j = Math.max(j, hash.get(arr[i])+1);
                //并同时更新重复值的新索引
                hash.put(arr[i], i);
            }else {
                hash.put(arr[i], i);
            }
            //更新max的值
            if (i - j + 1 > max) {
                    max = i - j + 1;
                }
        }
        return max;
    }
}