两种解法思路差不多:
- 对数组遍历, 并使用临时数组保存遍历过的元素, 如果元素出现,则比较并保存当前的最大长度,同时临时序列保留相同元素后的无重复序列继续遍历
- 使用双指针,如果新的元素 与起止指针范围内的元素重复,就暂存当前的无重复序列长度, 并将起始指针移动到重复元素后
class Solution: def maxLength(self , arr ): # write code here longest_length, cur_seq = 0, [] for i in arr: if i in cur_seq: longest_length = max(longest_length, len(cur_seq)) start = cur_seq.index(i) cur_seq = cur_seq[start+1:] cur_seq.append(i) return max(longest_length, len(cur_seq)) # 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+1 # except ValueError: # pass # j += 1 # return max(longest_length, j-i)