题解 | 最长无重复子数组
最长无重复子数组
https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4
class Solution { bool vis[100010] = {false}; // 标记数组,记录元素是否在当前窗口中出现过 public: int maxLength(vector<int>& arr) { int left = 0, right = 0, len = 1; // 初始化左右指针和最大长度 // 右指针遍历整个数组 while(right < arr.size()) { // 当右指针指向的元素已在窗口中出现,需要收缩左指针 while(vis[arr[right]] && left <= right) { vis[arr[left]] = false; // 标记左指针指向的元素为未访问 left++; // 左指针右移 } // 更新最大长度,窗口长度为 right - left + 1 len = max(len, right - left + 1); // 标记当前元素为已访问 vis[arr[right]] = true; // 右指针右移,扩展窗口 right++; } return len; // 返回最大无重复子数组长度 } };