方法:哈希表
遍历数组,使用哈希表记录下数组元素出现的次数,当遇到元素次数大于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; } };