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

Python程序因超时终止-HackerRank

伯庆
2023-03-14

我正在尝试解决一个来自HackerRank的问题,当我提交我的解决方案时,我得到一个错误,说明“由于超时而终止”。

问题:对n个大小的数组的左旋转操作将数组的每个元素向左移动1个单位。例如,如果对数组[1,2,3,4,5]执行两次左旋转,那么该数组将变为[3,4,5,1,2]。

给定一个由n个整数和一个数字d组成的数组,对该数组执行d个左旋转。然后将更新后的数组打印为单行以空格分隔的整数。

输入格式

样本输入

5 4 1 2 3 4 5

样本输出

因此,我们将数组的最终状态打印为一行空格分隔的值,即5 1 2 3 4。

我的代码:

def array_left_rotation(ar, n, k):
    for j in range(k):
        temp = ar[0]
        for i in range(0,n-1):
            ar[i] = ar[i+1]
        ar[n-1] = temp
    return ar
n, k = map(int, input().strip().split(' '))
a = list(map(int, input().strip().split(' ')))
answer = array_left_rotation(a, n, k);
print(*answer, sep=' ')

共有1个答案

周锐
2023-03-14

在这里,最好的方法是不要自己实际执行操作。在这种情况下,您是手动旋转列表,这是不必要的计算。

因此,首先,分析问题及其对各种输出的行为。让我们分析一下:

假设一个由5个元素组成的数组

array = [1,2,3,4,5]
[3,4,5,1,2]
[3,4,5,1,2]

类似的试验将会看到这种模式的出现。例如,对于k次的循环,它与k%n次相同。

现在我们有了这些,现在开始讨论计算部分。为此,只需使用列表切片来获得循环,如下所示:

#n -> number of elements in array
#k -> number of rotations to be performed
#a -> (list) array

def rotate(a,n,k) :
    rotations = k % n
    new_array = a[rotations:] + a[:rotations]

    return new_array
 类似资料:
  • 我试图解决hackerrank的一个问题,当我提交我的解决方案时,我得到一个错误,说明“由于超时而终止”。 请检查代码,并建议我如何优化。 语句:您有一个空序列,将向您提供查询。每个查询都是以下三种类型之一: 1 x-将元素x推入堆栈。2-删除堆栈顶部的元素。3-打印堆栈中的最大元素。 输入格式 输入的第一行包含一个整数。接下来的每一行都包含上述查询。(保证每个查询都是有效的。) 输出格式 对于每

  • 问题内容: 如何使多线程python程序响应Ctrl + C键事件? 编辑: 代码是这样的: 我试图在所有线程上删除join(),但仍然无法正常工作。是否因为每个线程的run()过程中的锁段? 编辑: 上面的代码应该可以工作,但是当当前变量在5,000-6,000范围内并遍历以下错误时,它总是会中断 问题答案: 在启动主线程之前,将除主线程之外的每个线程都设为守护进程(在2.6或更高版本中,在2.

  • 我正在Hackerrank中解决一个问题,如下所示: 给定一个整数的数组和一个数字,,对数组执行左旋转。返回要打印为单行空格分隔的整数的更新数组。 这是我非常简单的解决方案: 但它仍然会抛出一个错误: 我可以在此脚本中进行哪些改进?任何建议都会非常有帮助。提前致谢。

  • 问题内容: 我想尽可能快地重复执行子过程。但是,有时该过程将花费很长时间,因此我想取消它。我使用signal.signal(…),如下所示: 但有时这段代码将尝试阻止下一轮执行。停止test / home / lu / workspace / 152 / treefit / test2超时/ bin / sh:/ home / lu / workspace / 153 / squib_driver

  • 问题内容: 我正在使用SqlBulkCopy从xml备份还原表。其中一个表备份约为200MB,并且有很多记录。 我有错误: 问题答案: 您可能需要增加超时时间。尝试从默认值30秒增加该值。

  • 问题内容: 我找到了终止(关闭或停止)Java程序的方法。我找到了两个解决方案。 使用 return; 当我想退出或终止程序执行时,添加它。 使用 System.exit() ; 有时我用它。我从This Question中了解了 Sytem.exit()。 所以,我对他们都了解一点。但是我仍然对它们的实际工作方式感到困惑。请检查以下代码… 我确定 2不会出现。我想知道为什么或其他代码可以在的语句