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

京公网安备 11010502036488号