方法:哈希表

遍历数组,使用哈希表记录下数组元素出现的次数,当遇到元素次数大于1时,将数组的left右移直到元素次数不大于1。

设置一个值来维护无重复子数组的长度。

时间复杂度:o(n)

空间复杂度:o(n)

class Solution {
  public:
    int maxLength(vector<int>& arr) {
        unordered_map<int, int> map;

        int res = 0;
        for (int left = 0, right = 0; left <= right && right < arr.size(); right++) {
            map[arr[right]]++;

            while (map[arr[right]] > 1) {
                map[arr[left]]--;
                left++;
            }
            res = max(res, right - left + 1);
        }

        return res;
    }
};