/*
每次都在寻找当前i之前的最长数组
if(出现过) {
找到这个数字第一次出现的位置mp[arr[i]]
指针的位置至少要从mp[arr[i]]后面开始
}
更新ans
更改map表对应的值
*/
class Solution {
public:
int maxLength(vector<int>& arr) {
map<int,int> last;
int ans = 0, now = 0;
for (int i = 0; i < (int)arr.size(); ++i) {
last[arr[i]] = -1; // init
}
for (int i = 0; i < (int)arr.size(); ++i) {
if (last[arr[i]] != -1) {
now = max(now, last[arr[i]] + 1);
}
ans = max(ans, i - now + 1);
last[arr[i]] = i;
}
return ans;
}
};