题解 | 最长无重复子数组

最长无重复子数组

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

全部评论

相关推荐

06-07 19:59
门头沟学院 C++
补药卡我啊😭:都快15年前的了还在11新特性
你的简历改到第几版了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务