P7-8 递归实现栈逆序
书中思路 Python实现
import sys
sys.setrecursionlimit(3000)
class Solution(object):
def __init__(self):
self.stack = []
def getAndRemoveLastElement(self):
result = self.stack.pop()
if not self.stack:
return result
else:
last = self.getAndRemoveLastElement()
self.stack.append(result)
return last
def reverse(self):
if not self.stack:
return
i = self.getAndRemoveLastElement()
self.reverse()
self.stack.append(i)
s = Solution()
n = int(input())
s.stack=list(map(int,input().split()))
s.reverse()
print(' '.join(str(i) for i in s.stack))这题如果严格按照递归思路来解题, 需要对python的递归深度进行设置, 将默认的递归深度上限修改大一些即可过OJ,但python实现栈仍需使用list辅助,故排行榜上的优秀python解法并未使用递归, 而是借助python的内置函数
排行榜优解
n = input()
stack =list(map(str, input().split()))
print(' '.join(stack[::-1]))

京公网安备 11010502036488号