我理解为”蚯蚓爬“的方法,一点一点往后挪,遇到某个最长状态就记下来。

#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;
    }
};