Python程序因超时而终止

时间:2016-12-12 11:12:16

标签: python stack timeout termination

我正在尝试解决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))  

2 个答案:

答案 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