这个简单的 ArrayRotation 代码输出错误?

为左数组旋转编写了一个简单的代码,得到了相同的数组,但没有对其进行任何旋转,作为错误的输出。


def leftRotate(arr, d, n):

    while (d-1) > 0:

        leftRotatebyOne(arr, n)



def leftRotatebyOne(arr, n):

    temp = arr[0]

    for i in range(n-1):

        arr[i] = arr[i + 1]

    arr[n - 1] = temp



def PrintArray(arr, size):

    for i in range(size):

        print("%d" % arr[i], end=" ")



arr = []

l = int(input("Enter the number of elements: "))

for i in range(0, l):

    ele = int(input())

    arr.append(ele)


d = int(input("Enter the number of rotations: "))

n = len(arr)

leftRotate(arr, d, n)

PrintArray(arr, n)


这是我得到的输出的示例,


Enter the number of elements: 3

1

2

3

Enter the number of rotations: 1

1 2 3

我预计旋转一圈后输出为 2 3 1。


繁花不似锦
浏览 94回答 3
3回答

Qyouu

我建议使用数组切片,然后将切片添加在一起,以执行旋转。def left_rotate(data, num):    return data[num:] + data[:num]def right_rotate(data, num):    return data[-num:] + data[:-num]例如>>> a = [1,2,3,4,5,6,7]>>> left_rotate(a, 2)[3, 4, 5, 6, 7, 1, 2]>>> right_rotate(a, 2)[6, 7, 1, 2, 3, 4, 5]另请注意,collections.deque此行为已经可用>>> from collections import deque>>> d = deque([1,2,3,4,5,6,7])>>> d.rotate(2)>>> ddeque([6, 7, 1, 2, 3, 4, 5])>>> d.rotate(-2)>>> ddeque([1, 2, 3, 4, 5, 6, 7])

慕妹3146593

在函数 leftRotate 中,while 循环中有错误。代替while (d-1) > 0:     leftRotatebyOne(arr, n)和while d > 0:     leftRotatebyOne(arr, n)     d -= 1

慕姐8265434

当 时d == 1,while (d-1) > 0:任何时候都不会被执行。而且,你永远不会减少 d。最简单的解决方法是使用循环for _ in range(d):def leftRotate(arr, d, n):    for _ in range(d):        leftRotatebyOne(arr, n)注意: Python 有比这更好的旋转方法。这段代码看起来更像C而不是Python。例如,在 Python 中传递数组长度是没有意义的。并且轮换可以在一次分配中完成。def leftRotate(arr, d):    d %= len(arr)    for _ in range(d):        arr[-1], arr[:-1] = arr[0], arr[1:]科里·克莱默 (Cory Kramer) 的回答更加Python化。但它有一个错误,并且与你的问题的方法有所不同。错误在于,当请求的旋转次数高于列表的长度时,它不起作用。不同之处在于他们返回一个新列表而不是修改它。这两个问题可以这样解决:def left_rotate(data, num):    num %= len(data)    data[:] = data[num:] + data[:num]def right_rotate(data, num):    num %= len(data)    data[:] = data[-num:] + data[:-num]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python