Hackerrank 在 python 中左旋转超出时间限制

问题描述 投票:0回答:2

我是 hackerrank 和编程的新手,数据结构部分的左旋转问题是我试图完成的第三个问题。我的代码如下:

#!/bin/python3

import math
import os
import random
import re
import sys

def rotateLeft(d, arr, n):
    # Write your code here
    x=0
    while x<d:
      tmp=arr[0]
      for i in range(n):
        if i==(n-1):
           arr[i]=tmp
           break
        arr[i]=arr[i+1]
      x+=1
    
    return arr
       

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    first_multiple_input = input().rstrip().split()

    n = int(first_multiple_input[0])

    d = int(first_multiple_input[1])

    arr = list(map(int, input().rstrip().split()))

    result = rotateLeft(d, arr, n)

    fptr.write(' '.join(map(str, result)))
    fptr.write('\n')

    fptr.close()

我提交问题后,hackerrank 表示超出时间限制,我应该优化代码。因此,我尝试使用提供的 n 变量而不是使用 len(arr),希望能加快速度,但我想这没有帮助。希望大家能给我一些优化代码的建议。非常感谢!

python python-3.x optimization time-limiting
2个回答
0
投票

您可以简单地使用列表切片来解决此问题。

def rotateLeft(d, arr, n):
    return arr[d:]+arr[:d]

0
投票

只需使用这个 rotLeft 函数即可:

def rotLeft(a, d):
    return a[d:]+a[:d]
© www.soinside.com 2019 - 2024. All rights reserved.