class Solution { public: /** * * @param arr int整型vector the array * @return int整型 */ /* 【双指针】 从右指针进数,从左指针出数 */ int maxLength(vector& arr) { // write code here //invalid input if(arr.empty()) return 0; //init map map; // value-index int left = 0; int right = 1; map[arr[0]] = 0; int maxLength = 1; //记录最大连续不重复子序列长度 //假设 left--right 为连续不重复段 while(left<=right && right<arr.size()){ //[left,right] //待加入元素 arr[right]重复,先删除再加入 if(map.count(arr[right])){ //从left删除至与arr[right]等值元素 while(arr[left]!=arr[right]){ map.erase(arr[left]); ++left; } ++left; } //加入arr[right] map[arr[right]] = right; maxLength = max(maxLength, right - left + 1); ++right; } return maxLength; } };