题解 | #最长无重复子数组#
最长无重复子数组
http://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4
#
#
# @param arr int整型一维数组 the array
# @return int整型
#
#双指针思路
#1.right-left=无重复整数的长度
#2.如果字典中未出现过的整数-->啥都不做
#3.如果字典中出现过的整数-->更新left left=max(left,mm[arr[right]]) left和上一次出现的重复整数位置取最大
#4.每次都更新下无重复整数的长度,以及将当前arr[right]值在字典中更新
#list可以调用sort函数(key,reverse=True)
class Solution:
def maxLength(self , arr ):
# write code here
mm=dict()#声明字典
left=-1
right=0
res=0
length=len(arr)
while right<length:#右指针从左到右移动
if arr[right] in mm.keys():
left=max(left,mm[arr[right]])
res=max(res,right-left)
mm[arr[right]]=right
right+=1
return res