我理解为”蚯蚓爬“的方法,一点一点往后挪,遇到某个最长状态就记下来。
#include<vector>
class Solution {
public:
/**
*
* @param arr int整型vector the array
* @return int整型
*/
int maxLength(vector<int>& arr) {
// write code here
int l=0, r=0, length=0;
vector<int> now_num;
if(arr.empty()){
return 0;
}
now_num.push_back(arr[0]);
while(l <= r && r < arr.size()){
int i=0;
if(l!=r){
while(i<now_num.size()-1){ //R端后走了一步,和蚯蚓所有部分比对是否有相同的
if(arr[r] != now_num[i]){
i++;
}else{ //若有相同的,则前半截都不要了,L端走到相同的后一个
l += i+1;
now_num.erase(now_num.begin()+0,now_num.begin()+i+1);
break;
}
}
}
if(now_num.size() > length){ //永远保存length的最大值
length = now_num.size();
}
r++;
now_num.push_back(arr[r]); //蚯蚓长度加一
}
return length;
}
};