题解 | #用递归函数和栈操作逆序栈#

用递归函数和栈操作逆序栈

https://www.nowcoder.com/practice/ba7d7f5d1edf4d1690d66e12e951f6ea

import java.util.*;

public class ReverseStack {
    public int[] reverseStackRecursively(int[] stack, int top) {
        // write code here
//        r(stack, top - 1, 0);
//        return stack;

        Stack<Integer> stackAns = new Stack<>();
        for (int i : stack) {
            stackAns.push(i);
        }
        r(stackAns);
        for (int i = 0; i < stackAns.size(); i++) {
            stack[i] = stackAns.get(i);
        }

        return stack;
    }

    private void r(Stack<Integer> stackAns) {
        int pop = f(stackAns);
        if (stackAns.isEmpty()) {
            stackAns.push(pop);
            return;
        }

        r(stackAns);
        stackAns.push(pop);
    }

    private Integer f(Stack<Integer> stackAns) {
        Integer pop = stackAns.pop();
        if (stackAns.isEmpty()) {
            return pop;
        }

        Integer last = f(stackAns);
        stackAns.push(pop);
        return last;
    }
}

全部评论

相关推荐

群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务