题解 | #最长无重复子数组#
最长无重复子数组
https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4?tpId=295&tqId=1008889&ru=/exam/oj&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D295
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param arr int整型一维数组 the array
# @return int整型
#
class Solution:
def maxLength(self, arr: list[int]) -> int:
# write code here
if not arr:
return 0
# 定义i,j. i,j的初始值为0,i
i = 0
j = 0
start = 0
WindowmaxLength = 0
Window = set()
# for i in range()
# print(len(arr))
L = []
for j in range(len(arr)):
# 从左到右移动j,窗口扩大
if arr[j] not in Window:
Window.add(arr[j])
# L.append(j)
else:
# 窗口缩小,把重复值arr[j]以前的元素全部从窗口中移走,包括arr[j]以前的元素移走后,用新的left指针从新jishu
# Mylistset = list(Myset)
while arr[j] in Window:
Window.remove(arr[i])
i += 1
Window.add(arr[j])
# 记录最大的窗口
WindowmaxLength = max(WindowmaxLength, len(Window))
return WindowmaxLength

