题目

解法 字典 + 队列
遍历数组,新的元素element 不在字典中,将元素同时加入到字典和队列中。字典的key是元素值,value是什么不重要
如果已经在列表中,则要弹出这个元素及其前面的所有元素,相应地删除字典中地这些元素,在队列和字典中加入这个元素
[1,2,3,2,5]
- 遍历到1,dic={1:0} quee = [1]
- dic={1:0,2:0} quee = [1,2]
- dic={1:0,2:0,3:0} quee = [1,2,3]
- 遇到字典中已经有的元素了,弹出队列中的元素了,同时删除字典中的元素。
dic = {2:0,3:0}(1删掉了),quee = [3,2] - 遍历到5,加入dic = {2:0,3:0,5:0},quee = [3,2,5]
class Solution:
def maxLength(self , arr ):
if not arr:
return 0
max_length = 1
temp_count = 1
dic = {arr[0]:0}
quee = [arr[0]]
l = len(arr)
for i in range(1,l):
if arr[i] not in dic:
quee.append(arr[i])
dic[arr[i]] = 0
temp_count = len(quee)
max_length = max(temp_count,max_length)
else:
while quee and quee[0] != arr[i]:
dic.pop(quee.pop(0))
if quee:
quee.pop(0)
quee.append(arr[i])
dic[arr[i]] = 0
return max_length
利用解法字典与队列优化数组元素遍历
667

被折叠的 条评论
为什么被折叠?



