刚开始想着就去去重,然后求一下去重之后的元素个数:
class Solution {
public:
int maxLength(vector<int>& arr) {
// write code here
set<int>s;
for(int i=0;i<arr.size();i++)
{
s.insert(arr[i]);
}
return s.size();
}
};
仔细看了看题目,要求求的是最大连续不重复子串的长度,要求连续。
因此就不能上面那种求法了。
这里的求法是滑动窗口+哈希 最长无重复子数组_牛客题霸_牛客网
class Solution {
public:
int maxLength(vector<int>& arr) {
int res=0;
unordered_map<int,int>mp;
for(int left=0,right=0;right<arr.size();right++)
{
mp[arr[right]]++;
while(mp[arr[right]]>1)
{
mp[arr[left]]--;
left++;
}
res=max(res,right-left+1);
}
return res;
}
};