回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>问题是通过将数字从右侧移动k次来旋转列表。e、 k=3的g.[1,2,3,4,5,6,7]将从右一次旋转数字,并将其移动到列表顶部,以便输出为[5,6,7,1,2,3,4]。我没有在列表中使用pop和insert操作,而是决定在python中使用支持在O(1)中添加到列表左侧的dequue数据类型。然而,我不太确定从出列到列表的转换是如何发生的。第二个函数起作用,而第一个函数不起作用。如果你能解释原因,我将不胜感激</p>
<pre><code>from collections import deque
def rotateNums(nums, k):
dq = deque(nums)
for _ in range(0,k):
num = dq.pop()
dq.appendleft(num)
nums = list(dq)
def rotateNums(nums, k):
dq = deque(nums)
for _ in range(0,k):
num = dq.pop()
dq.appendleft(num)
nums[:] = list(dq)
nums = [1,2,3,4,5,6,7]
k = 3
print(f'nums before rotation: {nums}')
rotateNums(nums, k)
print(f'nums after rotation: {nums}')
</code></pre>
<p>第一个函数的输出是:旋转后的nums:[1,2,3,4,5,6,7]</p>
<p>第二个函数的输出是:[5,6,7,1,2,3,4]</p>