所以我正在尝试创建一个名为roll的函数,该函数将元素放在堆栈上的位置n,并使其成为顶部元素。例如,将堆栈 s 视为 1 2 3 4,其中左端是堆栈的底部,右端是顶部(因此数字 4 位于堆栈的顶部)。卷(s, 2) 将产生 1 2 4 3,卷子 3 将产生 1 3 4 2。
这是我到目前为止所拥有的
def roll(s: Stack, n: int):
'''
>>> roll([1,2,3,4], 2)
1243
>>> roll([1,2,3,4], 3)
1 3 4 2
'''
s2 = Stack()
if s.is_empty():
return null
else:
s2 = s[::-1]
在反转列表和从中挑选元素时,我遇到了最困难的时间。
给出的说明说问题说你不能从顶部访问元素 n 位置。您必须在新堆栈上推送前 n - 1 个元素。删除元素 n 后,将这些元素放回 s 上。
from stack import *
def roll (s, n):
'''Perform the roll operation on s.'''
t = Stack()
for i in range (n - 1):
t.push(s.pop())
rollVal = s.pop()
while t.isEmpty() == False:
s.push(t.pop())
s.push(rollVal)