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

最长无重复子数组

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

双指针:可视为一个从左到右移动的滑动窗口

class Solution:
    def maxLength(self , arr ):
        # write code here
        usedChar={} #记录当前不重复子数组
        l=0 #数组左边
        res=0 #最终输出,即最长无重复子数组的长度
        for i in range(len(arr)):
            if arr[i] in usedChar and usedChar[arr[i]]>=l: #这个已经出现
                l=usedChar[arr[i]]+1 #跳过这个,从下一个重新记录
            else:
                res=max(res, i-l+1)  #没有重复,就一边增加窗口宽度一边调整最大值
            usedChar[arr[i]]=i #匹配键值对
        return res
全部评论

相关推荐

昨天 14:22
门头沟学院 Java
大厂 测开 24*16离家近的事业编(大概只有大厂的1/4) 硕士
点赞 评论 收藏
分享
10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
我即大橘:耐泡王
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务