NC41 最长无重复子数组_排序算法
示例1

输入:
[2,3,4,5]
返回值:
4
说明:
[2,3,4,5]是最长子数组

示例2

输入:
[2,2,3,4,3]
返回值:
3
说明:
[2,3,4]是最长子数组

示例3

输入:
[9]
返回值:
1

示例4

输入:
[1,2,3,1,2,3,2,2]
返回值:
3
说明:
最长子数组为[1,2,3]

网友代码

class Solution {
public:
int maxLength(vector<int>& arr) {
int len = arr.size();
if(len<=1) return len;

int maxLen = 1;
set<int> S;
int left = 0, right = 0;
for(; right<len; right++) {
while(S.find(arr[right]) != S.end()) {
// 当集合 S中存在 arr[right]时,以数组 arr为依据,从left开始擦除,一直擦到S中没有arr[right]为止
S.erase(arr[left++]);
}
S.insert(arr[right]);
maxLen = max(maxLen, right-left+1);
}

return maxLen;
}
};