#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
    def maxLength(self , arr: List[int]) -> int:
        np = dict() #建立一个字典记录每个数字出现的次数
        res = 0 #输出最长的长度
        left = 0 #左指针
        for right in range(len(arr)):#右指针遍历整个arr
            if arr[right] in np:#如果右指针的数字在字典里出现过了,次数加一
                np[arr[right]] += 1
            else:#如果右指针的数字没出现在字典里过,建立一个数字,次数等于1
                np[arr[right]] = 1
            while np[arr[right]] > 1:#当右指针的数字在字典里出现的次数大于1,则移动左指针,并且左指针对应的数字的出现次数-1,直到右指针的数字出现次数为1为止
                np[arr[left]] -=1
                left +=1
            res = max(res, right - left + 1)#始终使输出的长度保持最大

        return res