思路1,使用一个临时数组作为子数组,遍历一遍
class Solution:
def maxLength(self , arr ):
if len(arr) in [0,1]:
return len(arr)
max_sub = 0 #最大无重复长度
tem_arr = [] #子数组
for i in arr:
if i not in tem_arr: #当前值不在子数组中
tem_arr.append(i)
max_sub = max(max_sub,len(tem_arr))
else:
start = tem_arr.index(i) #当前值在子数组中
tem_arr = tem_arr[start+1:] #从重复元素的下一个开始重新计算
tem_arr.append(i)
return max_sub 双指针
class Solution:
def maxLength(self , arr ):
if len(arr) in [0,1]:
return len(arr)
longest_length,i,j = 0, 0, 0
arr_length = len(arr)
while j < arr_length:
try:
index = arr[i:j].index(arr[j]) #若切片内存在下一个值,更新左指针
longest_length = max(longest_length, j-i)
i = index+i+1
except ValueError:#若不存在 跳过
pass
j += 1 #右指针每次向前一步
return max(longest_length, j-i) 
京公网安备 11010502036488号