题解 | 最长无重复子数组
最长无重复子数组
https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4
经典滑动窗口
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param arr int整型一维数组 the array # @return int整型 # class Solution: def maxLength(self , arr: List[int]) -> int: # 用于存储当前窗口中已经出现过的元素 seen = set() # 左指针,用于表示滑动窗口的左边界 left = 0 # 记录最长无重复元素子数组的长度 max_len = 0 # 右指针,用于遍历数组 for right in range(len(arr)): # 当右指针指向的元素已经在 seen 集合中时,需要移动左指针 while arr[right] in seen: # 从 seen 集合中移除左指针指向的元素 seen.remove(arr[left]) # 左指针右移 left += 1 # 将右指针指向的元素添加到 seen 集合中 seen.add(arr[right]) # 计算当前窗口的长度 current_len = right - left + 1 # 更新最长无重复元素子数组的长度 max_len = max(max_len, current_len) return max_len