#include <set>
#include <unordered_map>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param arr int整型vector the array
* @return int整型
*/
//本解法使用滑动窗口,特色是不使用哈希表,使用set,通过set的count方法判断元素是否重复
int maxLength(vector<int>& arr) {
// write code here
int n=arr.size();
std::set<int> myset;
if(n==0) return 0;
if(n==1) return 1;
int res=0;
int left=0;
for(int right=0;right<n;++right){
if(myset.count(arr[right])==0){
myset.insert(arr[right]);
res=max(res,static_cast<int>(myset.size()));
continue;
}else{
while(myset.count(arr[right])!=0){
myset.erase(arr[left]);
left++;
}
}
myset.insert(arr[right]);
res=max(res,static_cast<int>(myset.size()));
}
return res;
}
};