OR33. 用递归函数和栈操作逆序栈
描述
一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现了栈中元素的逆序,请设计一个算法实现逆序栈的操作,但是只能用递归函数来实现,而不能用另外的数据结构。
给定一个栈Stack以及栈的大小top,请返回逆序后的栈。
[1,2,3,4,5],5
返回:[5,4,3,2,1]
C++ 解法, 执行用时: 1ms, 内存消耗: 496KB, 提交时间: 2017-10-24
class ReverseStack { public: vector<int> reverseStackRecursively(vector<int> stack, int top) { int original_size=top; reverseStackRecursively(stack,original_size,top-1); return stack; } void reverseStackRecursively(vector<int> &stack,int original_size,int store_index) { if(store_index>=0) { int tmp=stack[store_index]; reverseStackRecursively(stack,original_size,store_index-1); stack[original_size-store_index-1]=tmp; } } };
C++ 解法, 执行用时: 3ms, 内存消耗: 436KB, 提交时间: 2021-09-23
class ReverseStack { public: vector<int> reverseStackRecursively(vector<int> stack, int top) { // write code here reverse(stack.begin(),stack.end()); return stack; } };