- 问题描述
给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。
子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组。
- 代码
class Solution {
public:
int maxLength(vector<int>& arr) {
unordered_set<int> set;
int max = -1;
int left = 0;
int right = 0;
while(right < arr.size()){
while(right < arr.size() && set.find(arr[right])==set.end()){
set.insert(arr[right]);
right++;
}
int size = set.size();
if(size > max) max = size;
while(left <= right && right < arr.size() && arr[left] != arr[right]){
set.erase(arr[left]);
left++;
}
set.erase(arr[left++]);
}
return max;
}
};