题解 | #最长无重复子数组#

最长无重复子数组

https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4?tpId=295&tqId=1008889&ru=/exam/oj&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D295

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
    def maxLength(self, arr: list[int]) -> int:
        # write code here
        if not arr:
            return 0

        # 定义i,j. i,j的初始值为0,i
        i = 0
        j = 0
        start = 0
        WindowmaxLength = 0
        Window = set()
        # for i in range()
        # print(len(arr))
        L = []

        for j in range(len(arr)):
            # 从左到右移动j,窗口扩大
            if arr[j] not in Window:
                Window.add(arr[j])
                # L.append(j)

            else:
                # 窗口缩小,把重复值arr[j]以前的元素全部从窗口中移走,包括arr[j]以前的元素移走后,用新的left指针从新jishu
                # Mylistset = list(Myset)
                while arr[j] in Window:
                    Window.remove(arr[i])
                    i += 1
                Window.add(arr[j])

            # 记录最大的窗口
            WindowmaxLength = max(WindowmaxLength, len(Window))
        return WindowmaxLength

全部评论

相关推荐

2024-12-21 01:36
电子科技大学 Java
牛客850385388号:员工福利查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务