当前位置: 首页 > 知识库问答 >
问题:

Python程序由于超时而终止

任云瀚
2023-03-14

我试图解决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个答案

邹誉
2023-03-14

这是正确的输入和预期的输出。

"""
    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
申屠俊发
2023-03-14

如果我看对了,你可以指定计数器,但我从不使用它。如果您的第一个输入不是明显不是的命令之一,那么这将不会产生任何输出或任何东西。

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))  
 类似资料:
  • 关于这个话题有很多讨论。我看了一遍,但没有一个有用。 问题似乎相当简单: 如果我们列出10以下的所有自然数,它们是3或5的倍数,我们得到3、5、6和9。这些倍数之和是23。 求N以下3或5的所有倍数之和。 输入格式第一行包含表示测试用例数量的T。接下来是T行,每一行包含一个整数N。 输出格式对于每个测试用例,打印一个整数,表示N以下3或5的所有倍数之和。 约束1≤T≤10^5 1≤N≤10^9 然

  • 我正在尝试解决一个来自HackerRank的问题,当我提交我的解决方案时,我得到一个错误,说明“由于超时而终止”。 问题:对n个大小的数组的左旋转操作将数组的每个元素向左移动1个单位。例如,如果对数组[1,2,3,4,5]执行两次左旋转,那么该数组将变为[3,4,5,1,2]。 给定一个由n个整数和一个数字d组成的数组,对该数组执行d个左旋转。然后将更新后的数组打印为单行以空格分隔的整数。 输入格

  • 我在google cloud中创建了一个google cloud函数,它将连接到我在google cloud中创建的postgresql实例。 我正在使用'pg'节点模块。 我已经为此创建了一个私有IP。 我收到以下错误: 错误:由于在timeout.ConnectionTimeouthAndle.SetTimeout(/workspace/node_modules/pg/lib/client.j

  • 这段代码在Hackerrank上的一些大输入上显示“Terminated due to timeout”(因超时而终止)错误,但在其余情况下仍能正常工作。请帮助我改进此代码。 约翰·沃森在整数数组上执行一个称为右圆旋转的操作。执行一次右圆旋转操作后,数组将从 转换为 。 Watson多次执行此操作。为了测试Sherlock识别旋转数组中特定位置的当前元素的能力,Watson请求查询,其中每个查询由

  • 大家好,请检查问题黑客排名问题陈述 这是我对上述问题的解决方案(链接) 当数组大小较大时,我的代码无法处理,例如数组中的17623个元素。 由于超时而终止 问题出在第二个for循环中,该循环遍历数组并给出数组中最大数字的索引。还有其他方法可以提高性能吗。

  • 从C#客户机,我的驱动变量在2秒后返回“Selenium Grid会话终止,因为SO#U超时”。我正在寻找一种方法来增加SE Grid server的超时时间,因为看起来我需要增加Selenium节点的超时时间。 感谢您帮助解决此问题。