我想先谢谢你的帮助。
我正在解决循环旋转问题,你必须将列表/数组的内容向右移动,并有效地将元素 Package 起来,例如:
例如,给定
A = [3, 8, 9, 7, 6]
K = 3
函数返回[9,7,6,3,8]。进行了三次旋转:
[3, 8, 9, 7, 6] -> [6, 3, 8, 9, 7]
[6, 3, 8, 9, 7] -> [7, 6, 3, 8, 9]
[7, 6, 3, 8, 9] -> [9, 7, 6, 3, 8]
代码如下:
def solution(A, K):
new_list = []
first_index = 0
for i in range(0, K):
for num in range(0, len(A) - 1):
new_list.insert(0, A.pop())
print('new list {}'.format(new_list))
print('old list {}'.format(A))
if len(new_list) == 3:
new_list.insert(len(new_list), A.pop(first_index))
print(new_list)
经过3次旋转,我得到了列表A = [8,9,7,6,3],所以对我来说,它似乎将A的最后一个元素放在了new_list的前面。
所以任何帮助或正确的方向将是有益的再次感谢你。
6条答案
按热度按时间vhipe2zx1#
你可以简单地用这段代码来做。
你可以在这里查看更多的方法来做到这一点。Efficient way to rotate a list in python
v1uwarro2#
所以我意识到我只需要循环K次并检查一个空列表。最后我得到的是:
qnyhuwrf3#
另一个解决方案是从collections模块使用deque。它有一个内置的旋转功能。
ff29svar4#
8ehkhllq5#
pgx2nnw86#
我发现的解决方案似乎更像是一个干净的代码