您当前的位置: 首页 >  算法

庄小焱

暂无认证

  • 2浏览

    0关注

    805博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

算法训练——剑指offer(队列 & 栈)

庄小焱 发布时间:2022-01-31 00:00:17 ,浏览量:2

摘要 一、队列 & 栈原理与解题方法

二、队列相关算法练习题目 2.1 两个栈实现队列

用两个栈实现队列_牛客题霸_牛客网

package 栈和队列;

import java.util.Stack;

/**
 * @Classname JZ9用两个栈实现队列
 * @Description TODO
 * @Date 2022/2/1 18:22
 * @Created by xjl
 */
public class JZ9用两个栈实现队列 {
    Stack stack1 = new Stack();
    Stack stack2 = new Stack();

    public void push(int node) {
        while (!stack2.isEmpty()){
            stack1.add(stack2.pop());
        }
        stack1.add(node);
    }

    public int pop() {
        while (!stack1.isEmpty()){
            stack2.add(stack1.pop());
        }
        return stack2.pop();
    }

    public void push1(int node) {
        stack1.push(node);
    }

    public int pop1() {
        if(stack1.empty()&&stack2.empty()){
            throw new RuntimeException("Queue is empty!");
        }
        if(stack2.empty()){
            while(!stack1.empty()){
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }
}
2.2 包含最小的min的栈

包含min函数的栈_牛客题霸_牛客网

package 栈和队列;

import java.util.Stack;

/**
 * @Classname JZ30包含min函数的栈
 * @Description TODO
 * @Date 2022/2/1 18:47
 * @Created by xjl
 */
public class JZ30包含min函数的栈 {

    Stack stack = new Stack();

    public void push(int node) {
        if (stack.isEmpty()) {
            stack.add(node);
            stack.add(node);
        } else {
            int value=stack.peek();
            if (value>=node){
                stack.add(node);
                stack.add(node);
            }else {
                stack.add(node);
                stack.add(value);
            }
        }
    }

    public void pop() {
        stack.pop();
        stack.pop();
    }

    public int top() {
        int n1=stack.pop();
        int n2=stack.pop();
        stack.add(n2);
        stack.add(n1);
        return n2;
    }

    public int min() {
        int tmp=stack.peek();
        return tmp;
    }

    Stack stack1 = new Stack();
    Stack stack2 = new Stack();

    public void push1(int node) {
        stack1.add(node);
        if (stack2.isEmpty()){
            stack2.add(node);
        }else {
            if (node            
关注
打赏
1657692713
查看更多评论
0.0389s