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]))