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