2021.09.28 - 098.最小栈

1. 题目

在这里插入图片描述

2. 思路

(1) 辅助栈

  • 利用stack1存储所有元素,stack2对应stack1中的元素存储当前stack1中的最小元素。

(2) 数组

  • 与(1)的思想基本相同,利用长度为2的数组代替两个栈,功能与(1)相同。

3. 代码

import java.util.Deque;
import java.util.LinkedList;

public class Test {
    
    
    public static void main(String[] args) {
    
    
    }
}

class MinStack {
    
    
    private Deque<Integer> stack1;
    private Deque<Integer> stack2;

    public MinStack() {
    
    
        stack1 = new LinkedList<>();
        stack2 = new LinkedList<>();
        stack2.push(Integer.MAX_VALUE);
    }

    public void push(int val) {
    
    
        stack1.push(val);
        stack2.push(Math.min(stack2.peek(), val));
    }

    public void pop() {
    
    
        stack1.pop();
        stack2.pop();
    }

    public int top() {
    
    
        return stack1.peek();
    }

    public int getMin() {
    
    
        return stack2.peek();
    }
}

class MinStack1 {
    
    
    private Deque<int[]> stack;

    public MinStack1() {
    
    
        stack = new LinkedList<>();
    }

    public void push(int val) {
    
    
        if (stack.isEmpty()) {
    
    
            stack.push(new int[]{
    
    val, val});
        } else {
    
    
            stack.push(new int[]{
    
    val, Math.min(val, getMin())});
        }
    }

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

    public int top() {
    
    
        return stack.peek()[0];
    }

    public int getMin() {
    
    
        return stack.peek()[1];
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44021223/article/details/120532152