这道题和“唯一的雪花一模一样”!!!泪目,,,,
整体不是很复杂,代码如下:
class Solution{
public:
int maxLength(vector<int>& arr) {
set<int>S;
int left=0,right=0,ans=0;
//int n=sizeof(arr[0]);//这种定义n的方法会使结果错误
int n=arr.size();
while(right<n)
{
while(right<n&&!S.count(arr[right]))//这里把right<n带上不然可能会在循环过程中越界
{
S.insert(arr[right++]);//不断循环,如果一直是新鲜的,可以一直right++
}
ans=max(right-left,ans);//注意这里是right-left,不用再加一(因为right在前面已经加过了
S.erase(arr[left++]);//退出循环说明right对应的数已经不新鲜了,要更新left咯!!
}
return ans;
}
};