Hot100-栈

20. 有效的括号 - 力扣(LeetCode)

class Solution {public boolean isValid(String s) {//用map的键值对匹配左右括号//按照顺序,先匹配的是左括号,所以栈里面放左括号HashMap<Character, Character> rlationship = new HashMap();rlationship.put(')','(');rlationship.put('}','{');rlationship.put(']','[');//用栈存放左括号,本质上是Deque双向队列Deque<Character> stack = new LinkedList();for (int i = 0; i<s.length(); i++){char ch = s.charAt(i);if (rlationship.containsKey(ch)){//若此时栈内为空或栈顶元素(左括号)和该右括号不匹配,则顺序不对if (stack.isEmpty() || rlationship.get(ch) != stack.peek()){return false;}stack.pop();}//排除以上逻辑,右括号-pop;此时只会是左括号-pushelse{stack.push(ch);}            }return stack.isEmpty();}
}

Java中虽然没有专门的Stack类,但可以使用Deque接口及其实现类如LinkedListArrayDeque来实现栈的功能。Deque接口提供了非常灵活且高效的栈操作,因此在实际应用中更为推荐。

双端队列(Deque)确实可以实现栈的功能,尽管栈是“先入后出”(LIFO,Last In, First Out),而队列是“先入先出”(FIFO,First In, First Out)。这是因为双端队列(Deque,Double-Ended Queue)允许在其两端进行插入和删除操作,这使得它可以模拟栈和队列两种数据结构的行为。

Deque 实现栈的原理

  1. 栈的操作
    • push:在栈顶添加元素。
    • pop:从栈顶移除元素。
    • peek:获取栈顶元素但不移除它。

在双端队列中,可以使用addFirstremoveFirst方法来模拟栈的pushpop操作。

  1. 队列的操作
    • enqueue:在队尾添加元素。
    • dequeue:从队头移除元素。

在双端队列中,可以使用addLastremoveFirst方法来实现队列的操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

deepinlinuxv23b3用lazarus3.2开发生成2维码

下载&#xff1a; https://sourceforge.net/projects/lazarus/files/ 最新版3.2.2的fpc,3.2的lazarus sourceforge默认下载慢&#xff0c;选择auto-select能够选择近的镜像站点&#xff0c;还不行的话也能够motrix下载会自动更换域名 linux的qrencode安装是 sudo apt…

跨境小白shopee被封号的原因?如何有效预防?

提到跨境电商平台&#xff0c;大家都知道亚马逊、Temu、TikTok shop这些是比较大的电商平台。但最近几年&#xff0c;在东南亚市场上&#xff0c;Shopee虾皮却是颇负盛名的一个跨境电商平台&#xff0c;这也让众多中国跨境小白蜂拥而至。目前shopee的商家正在不断增多&#xff…

[力扣题解] 130. 被围绕的区域

题目&#xff1a;130. 被围绕的区域 思路 代码 Method 1 : 深度优先搜索&#xff0c;自己写的 class Solution { private:int dir[4][2] {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};void dfs(vector<vector<char>>& board, vector<vector<bool>>&am…

vue3第三十四节(TS 之 interface 与 type 的异同)

1、interface 接口只能定义描述对象类型 如&#xff1a; interface PersonIn {name: string;age:number;job:string; }// 定义函数 interface FPerson {(a: number, b:string) > void }2、类型别名 type则可以定义多种类型 如&#xff1a; type userName string type…

DeepDriving | CUDA编程-02: 初识CUDA编程

本文来源公众号“DeepDriving”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;CUDA编程-02&#xff1a; 初识CUDA编程 上一篇文章DeepDriving | CUDA编程-01&#xff1a; 搭建CUDA编程环境-CSDN博客介绍了如何搭建CUDA编程环境&a…

选择、快排、堆排序、归并

选择排序 排序的核心是&#xff1a;在未排序的序列中&#xff0c;把未排序第一个元素和未排序的最小元素交换位置。 因此&#xff0c;设计时&#xff0c;显然要设置两重 for 循环 假设未排序的第一个元素称为 a &#xff0c; 未排序的最小元素称为 b 第一重 for 循环控制总…

web压力测试,要不要过滤掉JS,CSS等请求?

在进行性能测试&#xff08;压测&#xff09;时&#xff0c;是否过滤掉对JavaScript、CSS等静态资源的请求&#xff0c;取决于你测试的目标和目的。 是测试服务端的性能还是前端的性能。这两种目的所涉及到的测试场景和工具等方法是不一样的。 一般的web产品&#xff0c;像cs…

java 8--Lambda表达式,Stream流

目录 Lambda表达式 Lambda表达式的由来 Lambda表达式简介 Lambda表达式的结构 Stream流 什么是Stream流&#xff1f; 什么是流呢&#xff1f; Stream流操作 中间操作 终端操作 Lambda表达式 Lambda表达式的由来 Java是面向对象语言&#xff0c;除了部分简单数据类型…

利用kubeadm安装k8s集群 以及跟harbor私有仓库下载镜像

目录 环境准备 master&#xff08;2C/4G&#xff09; 192.168.88.3 docker、kubeadm、kubelet、kubectl、flannel node01&#xff08;2C/2G&#xff09; 192.168.88.4 docker、kubeadm、kubelet、kubectl、flannel node02&#xff08;…

2024中青杯数学建模竞赛B题药物属性预测思路代码论文分享

2024年中青杯数学建模竞赛B题论文和代码已完成&#xff0c;代码为B题全部问题的代码&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&#xff08;问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解&#xff09;、模型…

QT调用Tinyxml2库解析XML结构文件

在学习SVG结构的时候&#xff0c;发现SVG结构可以通过以XML文件直接解析&#xff0c;所以就去了解了Tinyxml2库的使用&#xff0c;相关教程也比较多。 个人感觉Tinyxml2库比官方的XML解析库更好用&#xff0c;这里做个技术总结&#xff0c;记录Tinyxml2库解析XML文件结构的简单…

【Linux取经路】一个简单的日志模块

文章目录 一、可变参数的使用二、Log2.1 日志打印2.1.1 时间获取2.1.2 日志分块打印 2.2 打印模式选择2.3 Log 使用样例2.4 Log 完整源码 三、结语 一、可变参数的使用 int sum(int n, ...) {va_list s; // va_list 本质上就是一个指针va_start(s, n); int sum 0;while(n){su…

为什么以太网适配器不是192.168而是196.254【笔记】

为什么以太网适配器不是192.168而是196.254【笔记】 前言版权为什么以太网适配器不是192.168而是196.254最后 前言 2024-03-12 22:55:34 公开发布于 2024-5-22 00:20:35 以下内容源自《【笔记】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CS…

Linux: tools: crash: not a supported file format

这个原因是,通过比对每个format的magic数值,或者其他的信息,来看是否属于某个format,如果都不符合,就会出现这个错误。说明kernel的coredump文件,dump的有些问题。 main (argc=3, argv=0x7fffffffda88) at main.c:496 496 } else if (is_compressed…

Java高级面试精粹:问题与解答集锦(一)

Java 面试问题及答案 1. 什么是Java中的多态&#xff0c;它是如何实现的&#xff1f; 答案&#xff1a; 多态是Java中的一个核心概念&#xff0c;它允许不同类的对象对同一消息做出响应&#xff0c;但具体的行为会根据对象的实际类型而有所不同。多态主要通过以下两种方式实现…

git命令行指引

命令行指引 您还可以按照以下说明从计算机中上传现有文件。 Git 全局设置 git config --global user.name "lizhijun" git config --global user.email "oldgunqfhotmail.com"创建一个新仓库 git clone gitfiles.tfedu.net:aigk985-gaokao/Folder-watc…

计算机毕业设计 | node.js(Express)+vue影院售票商城 电影放映购物系统(附源码+论文)

1&#xff0c;绪论 1.1 项目背景 最近几年&#xff0c;我国影院企业发展迅猛&#xff0c;各大电影院不断建设新的院线&#xff0c;每年新投入使用的荧幕数目逐年显著上升。这离不开人们的观影需求及对观影的过程要求的不断进步。广大观影消费者需要知道自己的空闲时间&#x…

Django中使用Celery(通用方案、官方方案)

Django中使用Celery&#xff08;通用方案、官方方案&#xff09; 目录 Django中使用Celery&#xff08;通用方案、官方方案&#xff09;通用方案场景前置准备完整代码 Celery官方方案【1】注册celery配置【2】创建celery文件【3】init注册【4】添加任务【5】启动worker异步任务…

设计模式六大原则之依赖倒置原则

文章目录 概念逻辑关系 小结 概念 依赖倒置原则指在设计代码架构时&#xff0c;高层模块不应该依赖底层模块&#xff0c;二者都应该依赖抽象。抽象不应该依赖于细节&#xff0c;细节应该依赖于抽象。 逻辑关系 如上图所示&#xff0c;逻辑应该就是这样&#xff0c;高层依赖于…

解决Wordpress中Cravatar头像无法访问问题

一、什么是Cravatar Gravatar是WordPress母公司Automattic推出的一个公共头像服务&#xff0c;也是WordPress默认的头像服务。但因为长城防火墙的存在&#xff0c;Gravatar在中国时不时就会被墙一下&#xff0c;比如本次从2021年2月一直到8月都是不可访问状态。 在以往的时候&…