class Solution {
public:
/*
i - j 之间为连续不重复数
vector<int> v 标记i - j之间元素是否存在。
初始 i=j=0 都放在数组首部 从i 出 j进
j++ 当v 中不存在arr[j]
i-- 当arr[j]存在 需要从i 出数 i++且v[arr[i]] = 0 直到 arr[i] == arr[j] 使得v[arr[j]] = 0时,j入队
每次进数记录最大值
*/
class Solution {
public:
int maxLength(vector<int>& arr) {
int len = arr.size();
if(len == 0) return 0;
vector<int> v(100000);
int res = 0, i = 0, j = 0;
while(j < len){
if(v[arr[j]] == 0){
v[arr[j]] = 1;
res = max(res, j-i+1);
j++;
}else {
v[arr[i]] = 0; i++;
}
}
return res;
}
};
京公网安备 11010502036488号