class Solution {
public:
/**
*
* @param arr int整型vector the array
* @return int整型
*/
int maxLength(vector<int>& arr) {
// write code here
int res=0;
int Len=arr.size();
//典型的滑动窗口题目
int Left=0,Right=0;
map<int,int> mp;
while( Right<Len )
{
if( 0==mp[ arr[Right] ] )
{
mp[ arr[Right] ]++;
++Right;
}
else
{
res=max( res, Right-Left );
while( mp[ arr[Right] ]>0 )
{
mp[ arr[Left] ]--;
++Left;
}
mp[ arr[Right] ]++;
++Right;
}
}
//记得“擦屁股”,因为可能2,3,4,5这样,就每次都没有重复,但是while中没有判断
res=max( res, Right-Left );
return res;
}
};