class Solution {
public:
/*
i - j 之间为连续不重复数
vector<int> v 标记i - j之间元素是否存在。
初始 i=j=0 都放在数组首部 从i 出 j进
j++ 当v 中不存在arr[j]
i-- 当arr[j]存在 需要从i 出数  i++且v[arr[i]] = 0 直到 arr[i] == arr[j] 使得v[arr[j]] = 0时,j入队 
每次进数记录最大值
*/
class Solution {
public:
    int maxLength(vector<int>& arr) {
        int len = arr.size();
        if(len == 0) return 0;
        vector<int> v(100000);
        int res = 0, i = 0, j = 0;
        while(j < len){
            if(v[arr[j]] == 0){
                v[arr[j]] = 1;
                res = max(res, j-i+1);
                j++;
            }else {
                v[arr[i]] = 0; i++;
            }
        }
        return res;
    }
};