最长无重复子数组 描述代码实现 描述 给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。 子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组。 代码实现 栈Hash class Solution:# 栈def stackSolve(self, arr: List[int]) -> int:stack, _max = [], 0for ch in arr:while ch in stack:stack.pop(0)stack.append(ch)_max = max(_max, len(stack))return _max# hashdef mpSolve(self, arr: List[int]) -> int:left, _max, mp = 0, 0, {}for i in range(len(arr)):ch = arr[i]if ch not in mp:mp[ch] = 1else:mp[ch] += 1while mp[ch] > 1:mp[arr[left]] -= 1left += 1_max = max(_max, i - left + 1)return _maxdef maxLength(self, arr: List[int]) -> int:# write code hereif len(arr) <= 1:print( len(arr) )print(self.stackSolve(arr) ,self.mpSolve(arr))