列表

详情


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;
    }
};

上一题