#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; } };