题目要求
思路
1.创建一个map<int,int>,前面的是数据,后面的是上一次这个数据出现的下标,只要map中没有这个数据,就插入当前数据的下标
2.当map中出现重复的数字,说这一轮的计算已经结束,将字符串长度同max进行比较,保存长的
3.然后将循环的下标i重新设置到重复元素第一次出现的位置,将map中的元素清除干净,重新往map中插入,直到循环完整个数组,返回max
代码实现
class Solution {
public:
int maxLength(vector<int>& arr) {
unordered_map<int, int> m;
int num = 0;
int max = 0;
for(int i = 0; i < arr.size(); i++)
{
if(m.count(arr[i]) == 0)
{
m[arr[i]] = i;
num++;
}
else if(m.count(arr[i]) > 0)
{
i = m[arr[i]];
m.clear();
num = 0;
}
if(max < num)
max = num;
}
return max;
}
};