class Solution {
public:
    /**
     * 
     * @param arr int整型vector the array
     * @return int整型
     */
    int maxLength(vector<int>& arr) {
        // write code here
        // 数组的值——数组的index
        unordered_map<int, int> value_index;
        int maxSize = 0;
        int curSize = 0;

        for (int i = 0; i < arr.size(); i++) {
            if (value_index.count(arr[i]) == 0) {
                value_index[arr[i]] = i;
                curSize++;
            }
            else if (value_index.count(arr[i]) > 0){
                // 记录上一次出现重复的值的 index
                i = value_index[arr[i]];
                value_index.clear();

                curSize = 0;
            }

            if (maxSize < curSize) {
                maxSize = curSize;
            }
        }

        return maxSize;
    }
};