我有一个问题,我需要将一个数组向左旋转k次。
即如果k= 2,1,2,3,4,5。-> 3、4、5、1、2
所以,我的代码是:
def array_left_rotation(a, n, k):
for i in range(n):
t = a[i]
a[i] = a[(i+n-1+k)%n]
a[(i+n-1+k)%n] = t
return a其中n=数组的长度。
我认为问题是一个映射问题,如果k= 1,则是一个-> an-1。
我的解决方案有什么问题?
发布于 2018-03-24 15:36:25
在索引的帮助下,另一种方法如下所示。
def rotate(l, n):
return l[n:] + l[:n]
print(rotate([1, 2, 3, 4, 5], 2))
#output : [3, 4, 5, 1, 2]这只会在n超出[-len(l), len(l)]范围时返回原始列表。要使其适用于n的所有值,请使用:
def rotate(l, n):
return l[-n % len(l):] + l[:-n % len(l)]发布于 2019-03-22 18:12:09
def leftRotation(a, d, n):
i=0
while i < n:
print (a[(i+d)%n], end = ' ')
i+=1
return i
if __name__ == '__main__':
a =[1, 2, 3, 4, 5, 6, 7]
d = 4
n = 7 or len(a)
leftRotation(a, d, n)这就是我如何解决我的hackerrank左旋转挑战
发布于 2019-10-20 21:40:27
一种将数组旋转n次的简单方法是使用切片,
def left_rotate(arr, n):
# arr - array to rotate
# n - n number of rotations
# For number of rotations greater than length of array
n = n % len(arr)
return arr[n:] + arr[:n]https://stackoverflow.com/questions/49462195
复制相似问题