最长无重复子串,比较自然的解法,不能是暴力破解

也算是很容易想到的一种解法:对数组作遍历的同时,如果出现重复元素,即定位到当前遍历数组第一次出现重复元素的位置,之后遍历位置从第一次出现重复元素位置下一个元素开始。

class Solution:
    def maxLength(self , arr: List[int]) -> int:
        # write code here
        if len(arr) == 0 or len(arr) == 1: return len(arr)
        i = 0
        ans = []
        while i<len(arr)-1:
            temp = 1
            end = 0
            for j in range(i+1, len(arr)):
                if arr[j] not in arr[i:j] and j < len(arr)-1:
                    temp+=1
                elif arr[j] not in arr[i:j] and j == len(arr)-1:
                    ans.append(temp+1)
                    end = j
                    break
                else:
                    ans.append(temp)
                    end = j
                    break
            if end == len(arr)-1: return max(ans)
            i = arr[i:end].index(arr[end])+i+1
            
        return max(ans)

全部评论

相关推荐

深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
今天投了小鹏,收到了AI面,大概会问哪些啊?
期末一定及格:总共4个部分,心理测评、行测、然后就是问岗位、对岗位的理解、过往遇到了哪些难点怎么解决,很简单,没有什么特别专业的问题,都是一些综合素质相关的
小鹏汽车AI面4人在聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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