【算法练习】leetcode算法题合集之栈和队列篇

普通栈

LeetCode20 有效的括号

LeetCode20 有效的括号

定义一个辅助map,判断字符串的字符是否在]})中。一旦是右括号就要弹出元素,判断匹配。

class Solution {
   
    public boolean isValid(String s) {
   
        if (s.length() % 2 == 1) {
   
            return false;
        }
        Map<Character, Character> pairs = new HashMap<>();
        pairs.put(')', '(');
        pairs.put(']', '[');
        pairs.put('}', '{');
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
   
            if (pairs.containsKey(s.charAt(i))) {
   
                if (stack.isEmpty() || pairs.get(s.charAt(i)) != stack.peek()) {
   
                    return false;
                }
                stack.pop();
            } else {
   
                stack.push(s.charAt(i));
            }
        }
        if (!stack.isEmpty()) {
   
            return false;
        }
        return true;
    }
}

LeetCode155. 最小栈

LeetCode155. 最小栈

使用栈记录最小的元素。

class MinStack {
   

    private Stack<Integer> stack;

    private Stack<Integer> minStack;

    public MinStack() {
   
        stack = new Stack<>();
        minStack = new Stack<>();
    }

    public void push(int val) {
   
        stack.push(val);
        if (minStack.isEmpty() || minStack.peek() >= val) {
   
            minStack.push(val);
        }
    }

    public void pop() {
   
        Integer pop = stack.pop();
        if (pop.equals(minStack.peek())) {
   
            minStack.pop();
        }
    }

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

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

LeetCode232. 用栈实现队列

LeetCode232. 用栈实现队列

在这里插入图片描述

相关推荐

  1. 算法练习leetcode算法动态规划

    2024-01-19 11:16:03       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-19 11:16:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-19 11:16:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-19 11:16:03       82 阅读
  4. Python语言-面向对象

    2024-01-19 11:16:03       91 阅读

热门阅读

  1. LeetCode解法汇总2171. 拿出最少数目的魔法豆

    2024-01-19 11:16:03       50 阅读
  2. 网络工程师:软件编程基础知识面试题(九)

    2024-01-19 11:16:03       50 阅读
  3. Python爬虫案例分享

    2024-01-19 11:16:03       55 阅读
  4. 前端为什么要使用枚举?(优化``if-else``版)

    2024-01-19 11:16:03       50 阅读
  5. kafka入门(八):副本

    2024-01-19 11:16:03       48 阅读
  6. Python:正则表达式之re.group()用法

    2024-01-19 11:16:03       51 阅读
  7. postgreSQL之grant

    2024-01-19 11:16:03       45 阅读
  8. linux安装Zookeeper的详细步骤

    2024-01-19 11:16:03       56 阅读
  9. AWS Cognito 实战指南

    2024-01-19 11:16:03       46 阅读
  10. 云原生微服务:现代化应用开发的支柱

    2024-01-19 11:16:03       59 阅读
  11. SpringBoot 实现 PDF 添加水印有哪些方案

    2024-01-19 11:16:03       37 阅读