主要思想就是双指针然后用set存区间中的值

class Solution {
public:
    /**
     * 
     * @param arr int整型vector the array
     * @return int整型
     */
    int maxLength(vector<int>& arr) {
        // write code here
        int ans = 0, l = 0, r = 0, n =arr.size();
        set<int> s;
        while(l<=r && r<n){
            while(r<n && s.find(arr[r]) == s.end()){
                s.insert(arr[r]);
                ++r;
            }
            ans = max(ans, r - l);
            while(l<=r && s.find(arr[r]) != s.end()){
                s.erase(arr[l]);
                ++l;
            }
            ans = max(ans, r - l);
        }
        return ans;
    }
};