我正在尝试解决hackerrank的一个问题,当我提交我的解决方案时,我收到一条错误,指出“因超时而终止”。
请检查代码并建议我如何优化。
声明: 您有一个空序列,您将获得查询。每个查询都是以下三种类型之一:
1 x - 将元素x推入堆栈。 2 - 删除堆栈顶部的元素。 3 - 打印堆栈中的最大元素。
输入格式
第一行输入包含一个整数。下一行包含上述查询。 (保证每个查询都有效。)
输出格式
对于每种类型的查询,在新行上打印堆栈中的最大元素。
示例输入
10 1 97 2 1 20 2 1 26 1 20 2 3 1 91 3
示例输出
26 91
我的代码:
n = int(input())
stack = []
for i in range(n):
l = list(map(int,input().split(" ")))
if l[0] == 1:
stack.append(l[1])
elif l[0] == 2:
stack.pop()
elif l[0] == 3:
print(max(stack))
答案 0 :(得分:0)
如果我看对了,你指定计数器i但从不使用它。如果您的第一个输入不是显然不是的命令之一,则不会产生任何输出或任何内容。
n = int(input())
stack = []
for i in range(n):
l = list(map(int,input().split(" ")))
if l[i] == 1:
stack.append(l[i+1])
elif l[i] == 2:
stack.pop()
elif l[i] == 3:
print(max(stack))
答案 1 :(得分:0)
这是具有预期输出的正确输入。
"""
proper input format for you problem
10
1 97
2
1 20
2
1 26
1 20
2
3
1 91
3
"""
n = int(raw_input())
stack = []
while n > 0:
# read the option here it may be of form 1 x or 2 or 3
option = map(int,raw_input().split())
# if it has two elements that means it was of form 1 x,
# so, push the second element on stack (stack[1])
if len(option) > 1:
stack.append(option[1] )
else:
# if option is 2 there will only be one element
# in option ( which is option[0]
# so, remove from top of stack
if option[0] == 2:
del stack[-1]
else:
print max(stack)
n = n-1