算法| 栈 队列

    1. 用栈实现队列
    1. 用队列实现栈
    1. 有效的括号
    1. 删除字符串中的所有相邻重复项
    1. 逆波兰表达式求值
    1. 前 K 个高频元素

232. 用栈实现队列


var MyQueue = function () {this.stackIn = []this.stackOut = []
};/** * @param {number} x* @return {void}*/
MyQueue.prototype.push = function (x) {this.stackIn.push(x)
};/*** @return {number}*/
MyQueue.prototype.pop = function () {const size = this.stackOut.lengthif (size) {return this.stackOut.pop()}while (this.stackIn.length) {this.stackOut.push(this.stackIn.pop())}return this.stackOut.pop()};/*** @return {number}*/
MyQueue.prototype.peek = function () {const x = this.pop()this.stackOut.push(x)return x
};/*** @return {boolean}*/
MyQueue.prototype.empty = function () {return !this.stackIn.length && !this.stackOut.length
};/*** Your MyQueue object will be instantiated and called as such:* var obj = new MyQueue()* obj.push(x)* var param_2 = obj.pop()* var param_3 = obj.peek()* var param_4 = obj.empty()*/

225. 用队列实现栈


var MyStack = function () {this.queue1 = []this.queue2 = []
};/** * @param {number} x* @return {void}*/
MyStack.prototype.push = function (x) {this.queue1.push(x)
};/*** @return {number}*/
MyStack.prototype.pop = function () {if (!this.queue1.length) {[this.queue1, this.queue2] = [this.queue2, this.queue1]}while (this.queue1.length>1) {this.queue2.push(this.queue1.shift())}return this.queue1.shift()
};/*** @return {number}*/
MyStack.prototype.top = function () {const x = this.pop()this.queue1.push(x)return x
};/*** @return {boolean}*/
MyStack.prototype.empty = function () {return !this.queue1.length && !this.queue2.length
};/*** Your MyStack object will be instantiated and called as such:* var obj = new MyStack()* obj.push(x)* var param_2 = obj.pop()* var param_3 = obj.top()* var param_4 = obj.empty()*/

20. 有效的括号

/*** @param {string} s* @return {boolean}*/
var isValid = function (s) {const stack = [];let left = "({[";let right = ")}]";for (let ch of s) {if (left.includes(ch)) {stack.push(ch);}if (right.includes(ch)) {let top = stack[stack.length - 1];if (top === undefined) return false;if ((ch === "}" && top === "{") ||(ch === ")" && top === "(") ||(ch === "]" && top === "[")) {stack.pop();}else {return false}}}return stack.length ===0 
};

1047. 删除字符串中的所有相邻重复项

/*** @param {string} s* @return {string}*/
var removeDuplicates = function(s) {const stack = []for(let ch of s){if(stack.length){top = stack[stack.length-1]if(top===ch){stack.pop()}else{stack.push(ch)}}else{stack.push(ch)}}return stack.join('')
};

150. 逆波兰表达式求值

/*** @param {string[]} tokens* @return {number}*/
var evalRPN = function (tokens) {const s = new Map([["+", (a, b) => a * 1 + b * 1],["-", (a, b) => b - a],["*", (a, b) => b * a],["/", (a, b) => (b / a) | 0]]);const stack = [];for (const i of tokens) {if (!s.has(i)) {stack.push(i);continue;}stack.push(s.get(i)(stack.pop(), stack.pop()))}return stack.pop();
};

347. 前 K 个高频元素

/*** @param {number[]} nums* @param {number} k* @return {number[]}*/
var topKFrequent = function (nums, k) {const map = {};for (let ch of nums) {map[ch] === undefined ? (map[ch] = 1) : (map[ch] += 1);}let arr = Object.entries(map);//   注意排序arr.sort((a, b) => b[1] - a[1]);let ans = [];for (let i = 0; i < k; i++) {ans.push(arr[i][0]);}return ans;
};

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

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

相关文章

【GIS人必看】如何手动更改ArcGIS矢量文件的编码方式

前面一篇文章&#xff0c;给大家免费免费开源了一款ArcGIS超级工具---一键扩展矢量文件字段名长度脚本工具 工具的具体获取及使用方法请点击链接&#xff1a;【ArcPy工具】【GIS人必备超级工具】【免费开源】ArcGIS超级工具-一键扩展矢量文件字段名长度-CSDN博客 其实工…

品牌有窜货可以这样治理

窜货是品牌渠道中的常见问题&#xff0c;也是品牌发展中必然要面对的&#xff0c;只要品牌没有做好前期的出货管控&#xff0c;窜货会非常容易出现&#xff0c;对区域的销售保护制度是很普遍的&#xff0c;经销商利用区域保护策略&#xff0c;钻品牌漏洞&#xff0c;进行窜货销…

windows 使用ffmpeg .a静态库:读取Wav音频并保存PCM

ffmpeg读取Wav音频并保存PCM&#xff08;源代码保存成 c 文件&#xff09;&#xff1a; // test_ffmpeg.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 ////#include <iostream>#include <libavcodec/avcodec.h> #include <libavform…

【MySQL使用】show processlist 命令详解

show processlist 命令详解 一、命令含义二、命令返回参数三、Command值解释四、State值解释五、参考资料 一、命令含义 对于一个MySQL连接&#xff0c;或者说一个线程&#xff0c;任何时刻都有一个状态&#xff0c;该状态表示了MySQL当前正在做什么。SHOW PROCESSLIST 命令的…

SpringBoot接口防抖(防重复提交)的一些实现方案

前言 啥是防抖 思路解析 分布式部署下如何做接口防抖&#xff1f; 具体实现 请求锁 唯一key生成 重复提交判断 前言 作为一名老码农&#xff0c;在开发后端Java业务系统&#xff0c;包括各种管理后台和小程序等。在这些项目中&#xff0c;我设计过单/多租户体系系统&a…

在Linux中使用docker【上】(docker、nvidia-docker安装)

在Linux中使用docker【上】&#xff08;docker、nvidia-docker安装&#xff09; 一、Docker介绍二、在Linux中使用Docker的意义2.1 轻量级与资源高效2.2 快速部署与版本控制2.3 隔离与安全2.4 简化运维2.5 跨平台兼容2.6 持续集成与持续部署&#xff08;CI/CD&#xff09; 三、…

软考中级系统集成必备100题(41-60)真题精炼

文章目录 41.控制进度采用的工具和技术有哪些&#xff1f;42.简述项目成本管理的过程&#xff1f;43.简述项目成本控制点主要内容&#xff1f;44.什么是应急储备和管理储备&#xff1f;45.简述项目质量管理包括哪些过程&#xff1f;46.请简述对质量与等级的认识&#xff1f;47.…

springboot+bootstrap+jsp校园二手书交易平台mlg86

考虑到实际生活中在校园二手书交易系统方面的需要以及对该系统认真的分析,将系统权限按管理员和学生这两类涉及用户划分。 (a) 管理员&#xff1b;管理员使用本系统涉到的功能主要有个人中心、学生管理、图书类型管理、二手图书管理、通知公告管理、管理员管理、用户留言、系统…

Linux操作系统已成为技术领域的一块重要基石

在数字时代&#xff0c;Linux操作系统已成为技术领域的一块重要基石&#xff0c;无论是开发者、系统管理员还是普通技术爱好者&#xff0c;Linux都扮演着不可或缺的角色。本文旨在为读者提供一个关于Linux常用命令的全面概览&#xff0c;帮助大家更高效地使用Linux系统。 Linu…

Windows Docker 部署 MySQL

部署 MySQL 打开 Docker Desktop&#xff0c;切换到 Linux 容器。然后在 PowerShell 执行下面命令&#xff0c;即可启动一个 MySQL 服务。这里安装的是 8.3.0 Tag版本&#xff0c;如果需要安装其他或者最新版本&#xff0c;可以到 Docker Hub 进行查找。 docker run -itd --n…

DC电源模块的 PCB设计和布局指南

BOSHIDA DC电源模块的 PCB设计和布局指南 DC电源模块的PCB设计和布局是一个关键的步骤&#xff0c;它直接影响到电源的性能和稳定性。下面是一些DC电源模块的PCB设计和布局的指南&#xff1a; 1. 选择合适的PCB尺寸和层数&#xff1a;根据电源模块的尺寸和功能需求&#xff0…

【SPDK】SPDK + fio编译、测试(包成功版)

准备使用fio对spdk做性能测试的时候,查阅网上的其他资料,发现基本上都没有直接能跑出来的。 经过自己的摸索,跑通了。特此记录一下整个过程,方便其他人参考。 一、 fio 编译 首先需要做的是fio的编译。 1、 下载fio源码 git clone https://github.com/axboe/fio.git 注…

蓝桥杯前端Web赛道-新鲜的蔬菜

蓝桥杯前端Web赛道-新鲜的蔬菜 题目链接&#xff1a;1.新鲜的蔬菜 - 蓝桥云课 (lanqiao.cn) 题目要求如下&#xff1a; 其实很容易联想到使用flex布局&#xff0c;这是flex布局一种非常经典的骰子布局&#xff0c;推荐Flex 布局教程&#xff1a;实例篇 - 阮一峰的网络日志 (r…

【python课程作业】python学生成绩管理系统

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。给舍友做的课程作业。 功能包括&#xff1a;成绩管理、学生管理、课程管理、班级管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.co…

Android m/mm/mmm/make编译模块

一.编译成模块的前置条件 Android编译环境初始化完成后&#xff0c;我们就可以用m/mm/mmm/make命令编译源代码了。lunch命令其实是定义在build/envsetup.sh文件中的函数lunch提供的。与lunch命令一样&#xff0c;m、mm和mmm命令也分别是由定义在build/envsetup.sh文件中的函数…

JD商品详情API:电商新宠,助力商家提升销售效率

JD商品详情API&#xff08;Application Programming Interface&#xff09;是一种为电商行业提供的接口服务&#xff0c;它允许商家或开发者从京东平台获取商品详情信息&#xff0c;进而将这些信息整合到自己的系统或应用中&#xff0c;以实现诸如商品比价、商品推荐、数据分析…

C#,电话数字键盘问题(Mobile Numeric Keypad problem)的算法与源代码

1 电话数字键盘问题 提供移动数字键盘。您只能按向上、向左、向右或向下至当前按钮的按钮。不允许您按最下面一行的角点按钮&#xff08;即.*和#&#xff09;。 移动键盘 给定一个数N&#xff0c;找出给定长度的可能数。 示例&#xff1a; 对于N1&#xff0c;可能的数字数为…

【 HTML 及浏览器 】前端跨页面通信

前端跨页面通信&#xff1a;连接分散界面的纽带 在构建复杂的前端应用时&#xff0c;我们常常需要在不同的页面之间进行数据通信。无论是同源页面还是非同源页面&#xff0c;通信机制都是实现多页面数据同步和交互的关键。本文将探讨各种前端跨页面通信的方法&#xff0c;并提…

迷不迷糊?前后端、三层架构和MVC傻傻分不清

现在的项目都讲究前后端分离&#xff0c;那到底什么是前后端&#xff0c;前后端和以前的MVC以及三层架构啥关系呢&#xff1f;今天就这个问题展开一下&#xff0c;方面后面的学习&#xff0c;因为前面讲的jsp、servlet和javabean根据实例&#xff0c;基本上有一个框架的理解了&…

经纬恒润线控制动系统,新能源智能汽车的未来标配

随着汽车电动化、智能化的发展&#xff0c;制动系统迎来新一轮变革。在新能源车型尤其是新能源智能汽车中&#xff0c;智能底盘系统在底盘融合控制、整车安全方面重要性越来越高&#xff0c;线控制动属于智能底盘的重要部分&#xff0c;凭借着快速响应和精确执行的优势&#xf…