双指针法,map记录的是每个不重复key的索引
class Solution {
public:
int maxLength(vector<int>& arr) {
// write code here
int n = arr.size();
int len =0;
unordered_map<int,int>mp;//用集合实先计数
for(int i =0,j=0;i<n;i++){
if(mp.count(arr[i])){
/// j=mp[arr[i]]+1;
//可能arr[i]重复的不是arr[j],而是map中某一个
//那么j 就会 > mp[arr[i]]
j=max(mp[arr[i]]+1,j);
}
mp[arr[i]]=i;
len=max(len,i-j+1);
}
return len;
}
};
用Unorder_set记录子数组,其大小就是子数组个数 ```cpp class Solution { public: int maxLength(vector
& arr) { // write code here
int n = arr.size();
int len =0;
unordered_set<int>jihe;
int l=0,r=0;
while(r<n){
if(jihe.find(arr[r]) !=jihe.end()){
jihe.erase(arr[l]);
l++;
}else{
jihe.insert(arr[r]);
r++;
}
len=max(len,(int)jihe.size());
}
return len;
} };
```