温馨提示:请看文章者具备一定的编程能力,不然看起来会比较吃力。
其实这道题目通过传统的列表访问索引的方法也是可以达到题目的效果,但是第一次提交通过0%,我个人推测可能是两个原因过不去
1、时间复杂度太高,因为这题涉及到添加删除等操作,列表很耗空间复杂度为o(n)而队列只要o(1)
2、这个是个官方题,可能不导入队列库不让通过
先看题目,其实就是在队列中做四个判断,分别是A(入队),B(出队),C(查看第一个数),D(打印当前队列长度)
主要还是注意题目给的要求,判断B和C之前还要看一些队列是否为空,如果为空打印相应得值
from collections import deque
q=deque()
n=int(input())
for _ in range(n):
op,*value=map(int,input().split()) #*用于接收多个值
if op==1:
q.append(value[0])
elif op==2:
if q: #如果不为空(类似于if q=True 也就是队列中有值)
q.popleft()
else:
print('lan')
elif op==3:
if q:
print(q[0])
else:
print('qiao')
elif op==4:
print(len(q))
具体代码见上
这边说一些细节,例如elif不能改成if,这样做会导致有的数据判断不了,其次就是可以在用户输入的循环中直接去判断数据,只要逻辑合理即可