最長無重復子數組 描述代碼實現 描述 給定一個長度為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))