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

最长无重复子数组

http://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4

#
# 创建一个列表lis表示arr的不重复子列表,遍历arr,lis为每一个元素的最大不重复子列表。
#

# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
    def maxLength(self , arr: List[int]) -> int:
        # write code here
        if len(arr)<=1:
            return len(arr)
        lis = []
        res = 1
        # 遍历arr
        for i in arr:
            # i在lis中有重复,i前的最大不重复子列表长度为max(res, len(lis)),更新lis为重复元素之后的元素,再加上i
            if i in lis:
                res = max(res, len(lis))
                lis = lis[lis.index(i)+1:] + [i]
            # 若不重复,将i添加到lis中,i前的最大不重复子列表长度为res = max(res,len(lis))
            else:
                lis.append(i)
                res = max(res,len(lis))
        return res
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务