【剑指offer】栈 队列

📁 JZ9 用两个栈实现队列

        一个栈in用作进元素,一个栈out用于出元素。当栈out没有元素时,从in栈获取数据,根据栈的特性,栈out的top元素一定是先进入的元素,因此当栈out使用pop操作时,一定时满足队列的特性的。

class Solution
{
public:void push(int node) {s1.push(node);}int pop() {if(s2.empty()){while(!s1.empty()){int top = s1.top();s1.pop();s2.push(top);}}int top = s2.top();s2.pop();return top;}private:stack<int> s1;stack<int> s2;
};

📁 JZ30 包含min函数的栈

        一个栈s1用于存放所有元素,一个栈s2用于存放最小元素以及在入栈之前的那些最小元素。

class Solution {
public:void push(int value) {s1.push(value);if(s2.empty() || value <= s2.top())s2.push(value);}void pop() {if (s1.top() == s2.top()){s1.pop();s2.pop();}else {s1.pop();}}int top() {return s1.top();}int min() {return s2.top();}
private:stack<int> s1;stack<int> s2;
};

📁 JZ31 栈的压入、弹出序列

        使用stack模拟进栈和出栈,如果能模拟出来返回true,不能返回false。

class Solution {
public:bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {// write code herestack<int> s;int i=0;for(auto& e : pushV){s.push(e);while(!s.empty() && s.top() == popV[i]){s.pop();++i;}}return s.empty();}
};

📁 JZ73 翻转单词序列

        以空格为分隔符,取出每一个单词放入栈中,根据栈的性质出栈完成单词翻转。

#include <string>
class Solution {
public:string ReverseSentence(string str) {stack<string> s;int i=0,j=0;while(i < str.length()){j = i;while(j < str.length() && str[j] != ' ')++j;s.push(str.substr(i,j-i));i = j+1;}string newStr;while(!s.empty()){newStr += s.top();s.pop();if(!s.empty())newStr += " ";}return newStr;}
};

📁 JZ59 滑动窗口的最大值

📁 JZ59 滑动窗口的最大值

        根据性质,得出当有一个较大值进入窗口时,所有比他小的元素不影响结果,因此我们就可以使用一个双端队列来完成:当一个较大值进入时,移除所有比它小的之前进入的元素。

        双端队列的队头就是该窗口内的最大值下标。为什么这里采用下标呢,因为为了方便处理判断该元素是否还在窗口内。

vector<int> maxInWindows(vector<int>& num, int size) {vector<int> ret;deque<int> dq;if(num.size() < size || size <= 0)return ret;//找第一个窗口for(int i = 0 ; i < size ; ++i){//插入新元素时, 去除比他小的之前的元素(下标)while(!dq.empty() && num[dq.back()] < num[i])dq.pop_back();dq.push_back(i);}           for(int i = size; i < num.size() ; ++i){ret.push_back(num[dq.front()]);//窗口后移, 窗口之前的元素去掉while(!dq.empty() && dq.front() < (i-size+1))dq.pop_front();//插入新元素时, 去除比他小的之前的元素while(!dq.empty() && num[dq.back()] < num[i])dq.pop_back();dq.push_back(i);}ret.push_back(num[dq.front()]);return ret;}

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

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

相关文章

GoView 低代码数据可视化

纯前端 分支&#xff1a; master &#x1f47b; 携带 后端 请求分支: master-fetch &#x1f4da; GoView 文档 地址&#xff1a;https://www.mtruning.club/ 项目纯前端-Demo 地址&#xff1a;https://vue.mtruning.club/ 项目带后端-Demo 地址&#xff1a;https://demo.mtrun…

Spring Boot返回前端Long型丢失精度 后两位 变成00

文章目录一、前言二、问题描述2.1、问题背景2.2、问题示例三、解决方法3.1、将ID转换为字符串3.2、使用JsonSerialize注解3.3、使用JsonFormat注解一、前言 在后端开发中&#xff0c;我们经常会遇到需要将ID作为标识符传递给前端的情况。当ID为long类型时&#xff0c;如果该ID…

计算机网络实验——无线局域网安全实验

实验1. WEP和WPA2-PSK实验一、实验目的验证AP和终端与实现WEP安全机制相关的参数的配置过程。验证AP和终端与实现WPA2-PSK安全机制相关的参数的配置过程。验证终端与AP之间建立关联的过程。验证关闭端口的重新开启过程。验证属于不同BSS的终端之间的数据传输过程。二、实验任务…

【从零开始学Dify】大模型应用开发平台Dify本地化部署

目录Dify一、本地化部署1、安装docker2、安装Dify&#xff08;1&#xff09;拉取代码到本地&#xff08;2&#xff09;docker部署&#xff08;3&#xff09;查看服务状态&#xff08;4&#xff09;web端部署&#xff08;5&#xff09;登录二、可能会出现的问题&#xff08;1&am…

LVGL应用和部署(和物理按键交互)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】屏幕除了显示部分&#xff0c;还要去和其他外设进行交互&#xff0c;这是非常重要的一个处理方法。我们知道&#xff0c;不管是mcu&#xff0c;还是…

限流式保护器如何筑牢无人驾驶汽车充电站的安全防线

摘要&#xff1a; 随着新能源汽车&#xff0c;尤其是无人驾驶车队的快速发展&#xff0c;充电设施的安全可靠性至关重要。交流充电桩&#xff08;俗称“慢充桩”&#xff09;作为重要的充电基础设施&#xff0c;其末端回路的安全保护需满足国家标准GB51348-2019的严格要求&…

专题:2025母婴行业洞察报告|附60+份报告PDF汇总下载

原文链接&#xff1a;https://tecdat.cn/?p42908 全球母婴市场正经历结构性增长&#xff0c;一面是欧美成熟市场的品质消费升级&#xff0c;一面是东南亚、中东等新兴市场的人口红利释放。2020至2026年&#xff0c;全球母婴市场规模将从1859亿美元增至3084亿美元&#xff0c;年…

从零搭建多商户商城系统源码:技术栈、数据库设计与接口规划详解

如今&#xff0c;多商户商城系统已成为传统零售转型与新型电商平台构建的关键利器。无论是打造像某宝、某东这样的综合型平台&#xff0c;还是服务于垂直行业的独立电商&#xff0c;一套高效、可扩展的多商户商城系统源码&#xff0c;往往决定着平台的成败。 今天&#xff0c;小…

在Docker中运行macOS的超方便体验!

在数字化和开发人员快速迭代的今日&#xff0c;拥有一个便捷、高效的开发环境成为每个开发者梦寐以求的事情。特别是在需要操作多个系统、开发跨平台应用时&#xff0c;调试和测试的便利性显得尤为重要。今天为大家介绍的这款开源项目&#xff0c;正是一个解决此类问题的利器—…

Kettle导入Excel文件进数据库时,数值发生错误的一种原因

1、问题描述及原因 在使用kettle读取Excel文件、并导入数据库时&#xff0c;需要读取Excel中的数值、日期(或日期时间、时间)、文本这三种类型的列进来&#xff0c;发现读取其中的数值时&#xff0c;读取的数字就不对。 经调查&#xff0c;原因是&#xff0c;在“导出数据为E…

Windows安装DevEco Studio

1. 概述 DevEco Studio是华为基于IDEA Community开源工具开发的一站式HarmonyOS应用及元服务开发平台&#xff0c;为开发者提供代码开发、编译构建以及调测等功能 2. 运行环境要求 操作系统&#xff1a;Windows10 64位、Windows11 64位 内存&#xff1a;16GB及以上 硬盘&…

PLC框架-1.3.2 报文750控制汇川伺服的转矩上下限

本文介绍1200PLC如何使用750报文设定伺服转矩的上下限。 750号报文 PLC---->伺服 (控制) 伺服--->PLC (状态) PZD1

Redis知识集合---思维导图(持续更新中)

一、Redis中常见的数据类型有哪些&#xff1f;二、Redis为什么这么快&#xff1f;三、为什么Redis设计为单线程&#xff1f;6.0版本为何引入多线程&#xff1f;四、

mac m1安装大模型工具vllm

1 更新系统环境 参考vllm官网文档&#xff0c;vllm对apple m1平台mac os, xcoder, clang有如下要求 OS: macOS Sonoma or later SDK: XCode 15.4 or later with Command Line Tools Compiler: Apple Clang > 15.0.0 在App Store更新macOS和XCoder&#xff0c;依据XCoder版本…

解锁localtime:使用技巧与避坑指南

目录 一、引言 1.1 背景与目的 1.2 localtime 函数简介 二、localtime 函数详解 2.1 函数原型与参数 2.2 返回值与 tm 结构体 2.3 基本使用示例 三、localtime 函数的缺陷剖析 3.1 多次调用同一共享区间导致错误 3.1.1 问题现象展示 3.1.2 原因深入分析 3.1.3 实际影…

郑州机械设计研究所 -PHM产品序列概览

1.设备状态监测系统 动态信号监测很像是三个独立通道&#xff0c;振动&#xff0c;转速&#xff0c;然后高频的某个频带。或者是同一个振动信号做的低频和高频两个带通&#xff0c;时域和频域组图。实时检测&#xff0c;很明显是24个时 -频指标。 动态分析看起来像趋势图。 2.…

《棒垒球知道》奥运会的吉祥物是什么·棒球1号位

Olympic Mascots & Baseball/Softball Games History ⚾&#xff08;奥运吉祥物与棒垒球赛事全科普&#xff09;1984洛杉矶奥运会 / Los Angeles 1984Mascot: Sam the Eagle&#xff08;山姆鹰&#xff09;美国精神象征&#xff0c;红白蓝配色超吸睛&#xff01;Baseball/S…

【提高篇-基础知识与编程环境:1、Linux系统终端中常用的文件与目录操作命令】

Linux终端提供了丰富的命令来操作文件和目录&#xff0c;以下简单介绍一些常用的命令&#xff1a; 一、目录操作命令 pwd - 显示当前工作目录 pwd #输出当前所在目录的绝对路径 cd - 切换目录 cd /path/to/directory # 切换到指定目录 cd … # …

前端性能优化:从之理论到实践的破局道

&#x1f680; 前端性能优化&#xff1a;从之理论到实践的破局道 摘要&#xff1a;本文针对首屏加载、渲染卡顿等核心痛点&#xff0c;结合当前主流技术栈给出可落地的优化方案一、为什么你的页面"又慢又卡"&#xff1f; 用户真实体验数据&#xff1a; 加载时间超过3…

2025年最新Python+Playwright自动化测试- 隐藏元素定位与操作

1.简介 对于前端隐藏元素&#xff0c;一直是自动化定位元素的隐形杀手&#xff0c;让人防不胜防。脚本跑到隐藏元素时位置时报各种各样的错误&#xff0c;可是这种隐藏的下拉菜单又没有办法避免&#xff0c;所以非常头痛&#xff0c;这一篇只为交流隐藏元素自动化定位处理方法以…