当前位置: 首页 > article >正文

代码随想录—day11—栈与队列(part2)

题例:150. 逆波兰表达式求值 - 力扣LeetCode给你一个字符串数组tokens表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。注意有效的算符为、-、*和/。每个操作数运算对象都可以是一个整数或者另一个表达式。两个整数之间的除法总是向零截断。表达式中不含除零运算。输入是一个根据逆波兰表示法表示的算术表达式。答案及所有中间计算结果可以用32 位整数表示。示例 1输入tokens [2,1,,3,*]输出9解释该算式转化为常见的中缀算术表达式为((2 1) * 3) 9示例 2输入tokens [4,13,5,/,]输出6解释该算式转化为常见的中缀算术表达式为(4 (13 / 5)) 6示例 3输入tokens [10,6,9,3,,-11,*,/,*,17,,5,]输出22解释该算式转化为常见的中缀算术表达式为 ((10 * (6 / ((9 3) * -11))) 17) 5 ((10 * (6 / (12 * -11))) 17) 5 ((10 * (6 / -132)) 17) 5 ((10 * 0) 17) 5 (0 17) 5 17 5 22提示1 tokens.length 104tokens[i]是一个算符、-、*或/或是在范围[-200, 200]内的一个整数class Solution { public: int evalRPN(vectorstring tokens) { stackintst; for(string str:tokens){ if(str||str-||str*||str/){ int num1st.top(); st.pop(); int num2st.top(); st.pop(); if(str){st.push(num1num2);} if(str-){st.push(num2-num1);} if(str*){st.push(num1*num2);} if(str/){st.push(num2/num1);} }else{ st.push(stoll(str)); } } int resultst.top(); st.pop(); return result; } };感觉审题挺难的但实际上就只需要遍历tokens遍历到数字就把元素压入栈中遍历到运算符号就让原栈顶和新栈顶进行对应的运算再把两个元素弹出压入运算结果就可以了题例:239. 滑动窗口最大值 - 力扣LeetCode给你一个整数数组nums有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1输入nums [1,3,-1,-3,5,3,6,7], k 3输出[3,3,5,5,6,7]解释滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 731 [3 -1 -3] 5 3 6 731 3 [-1 -3 5] 3 6 751 3 -1 [-3 5 3] 6 751 3 -1 -3 [5 3 6] 761 3 -1 -3 5 [3 6 7]7示例 2输入nums [1], k 1输出[1]提示1 nums.length 105-104 nums[i] 1041 k nums.lengthclass Solution { private: class Myqueue{ public: dequeintque; void pop(int value){ if(!que.empty()que.front()value){ que.pop_front(); } } void push(int value){ while(!que.empty()valueque.back()){ que.pop_back(); } que.push_back(value); } int front(){ return que.front(); } }; public: vectorint maxSlidingWindow(vectorint nums, int k) { Myqueue que; vectorintresult; for(int i0;ik;i){ que.push(nums[i]); } result.push_back(que.front()); for(int ik;inums.size();i) { que.pop(nums[i-k]); que.push(nums[i]); result.push_back(que.front()); } return result; } };引入单调队列Myqueue保证其首部储存的一直为窗口中的最大元素pop掉已经离开窗口的最大元素题例347. 前 K 个高频元素 - 力扣LeetCode给你一个整数数组nums和一个整数k请你返回其中出现频率前k高的元素。你可以按任意顺序返回答案。示例 1输入nums [1,1,1,2,2,3], k 2输出[1,2]示例 2输入nums [1], k 1输出[1]示例 3输入nums [1,2,1,2,1,2,3,1,3,2], k 2输出[1,2]提示1 nums.length 105-104 nums[i] 104k的取值范围是[1, 数组中不相同的元素的个数]题目数据保证答案唯一换句话说数组中前k个高频元素的集合是唯一的进阶你所设计算法的时间复杂度必须优于O(n log n)其中n是数组大小。class Solution { public: // 小顶堆 class mycomparison { public: bool operator()(const pairint, int lhs, const pairint, int rhs) { return lhs.second rhs.second; } }; vectorint topKFrequent(vectorint nums, int k) { // 要统计元素出现频率 unordered_mapint, int map; // mapnums[i],对应出现的次数 for (int i 0; i nums.size(); i) { map[nums[i]]; } // 对频率排序 // 定义一个小顶堆大小为k priority_queuepairint, int, vectorpairint, int, mycomparison pri_que; // 用固定大小为k的小顶堆扫面所有频率的数值 for (unordered_mapint, int::iterator it map.begin(); it ! map.end(); it) { pri_que.push(*it); if (pri_que.size() k) { // 如果堆的大小大于了K则队列弹出保证堆的大小一直为k pri_que.pop(); } } // 找出前K个高频元素因为小顶堆先弹出的是最小的所以倒序来输出到数组 vectorint result(k); for (int i k - 1; i 0; i--) { result[i] pri_que.top().first; pri_que.pop(); } return result; } };这里还没学二叉树相关知识题就先欠着了......

相关文章:

代码随想录—day11—栈与队列(part2)

题例:150. 逆波兰表达式求值 - 力扣(LeetCode) 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数&a…...

从手机TCP调试助手到单片机:ESP8266-01s数据透传完整链路搭建实录

从手机到单片机:ESP8266-01s数据透传实战指南 去年夏天,我在为一个智能农业项目搭建远程控制模块时,第一次真正体会到ESP8266-01s这个小巧WiFi模块的强大之处。当时需要在50米外的水泵控制器上实现手机远程开关,而ESP8266-01s配合…...

大模型的探索与实践-课程笔记(四):Agent与Multi-Agent

Take-away MessagesAgent智能体 让大模型能够调用工具 规划、记忆、行动 Manus / OpenManus 在本地部署OpenManusMulti-Agent 任务分解、任务联动 Coze 利用Coze构建智能体1.1 从大模型(LLM)到智能体(Agent)1. 概念演进&#xff1…...

【马斯克系 | AI版图】xAI合并SpaceX之后,紧接着是Cursor——1.25万亿美元之后,马斯克还在买什么

一、合并全景:1.25万亿美元背后的估值逻辑 从180亿到2500亿:18个月估值十倍跃迁 2024年5月,xAI的B轮融资在行业内引发过一轮讨论。 彼时距离这家公司成立才14个月,旗下核心产品Grok-1刚刚开源3140亿参数模型,市场评…...

机械识图:基本视图

在机械图样的表示法中,可分为基本表示法和特殊表示法。 基本表示法:图样画法是以真实投影为基础的画法,但画出的图形又不完全是机件(工程形体)的真实投影。 特殊表示法:图样画法是采用特殊的规定画法来表示…...

实测PCIE 3.0 x8带宽逼近极限?手把手调试AXI Bridge实现6.6GB/s传输与4GB/s落盘

PCIe 3.0 x8极限带宽实战:AXI Bridge调优实现6.6GB/s传输与4GB/s落盘 当数据洪流遇上硬件瓶颈,每一位追求极致性能的工程师都面临着同样的挑战:如何在有限带宽下榨干每一滴传输潜力。本文将带你深入PCIe 3.0 x8的带宽优化前线,从硬…...

MyBatis-Plus 3.5升级后,分页插件PaginationInterceptor报错?手把手教你换成PaginationInnerInterceptor

MyBatis-Plus 3.5升级后分页插件报错全解析:从问题定位到完美修复 最近在升级MyBatis-Plus到3.5版本后,不少开发者发现原本运行良好的分页功能突然报错,控制台抛出各种异常信息。这实际上是MyBatis-Plus团队对分页机制进行了重构导致的兼容性…...

告别系统休眠困扰:MouseJiggler鼠标模拟工具的完整使用指南

告别系统休眠困扰:MouseJiggler鼠标模拟工具的完整使用指南 【免费下载链接】mousejiggler Mouse Jiggler is a very simple piece of software whose sole function is to "fake" mouse input to Windows, and jiggle the mouse pointer back and forth.…...

2026年Context Engineering完全指南:上下文即代码

"Prompt Engineering 已死,Context Engineering 万岁。"这句在 AI 工程圈流传的话,道出了一个真相:决定 LLM 输出质量的,不是几句巧妙的措辞,而是你如何系统性地管理模型的上下文窗口。本文从理论到工程实践…...

Tools for Humanity 宣布与布鲁诺·马尔斯巡演合作遭否认,Concert Kit 将改在杰瑞德·莱托乐队巡演推出

眼球扫描初创公司宣布合作巡演却遭否认,Concert Kit改在杰瑞德莱托乐队巡演推出山姆阿尔特曼创立的眼球扫描初创公司 Tools for Humanity 上周宣布,一款名为 Concert Kit 的新产品将首先在布鲁诺马尔斯最新录音室专辑《The Romantic》的世界巡演中推出&a…...

Kubernetes 集群服务发现机制详解

Kubernetes 集群服务发现机制详解 在现代云原生架构中,服务发现是微服务通信的核心环节。Kubernetes 作为容器编排的事实标准,提供了高效且灵活的服务发现机制,帮助开发者在动态环境中实现服务间的稳定通信。本文将深入解析 Kubernetes 的服…...

从手机拍照到NeRF建模:相机标定参数(内参/外参)到底在忙活啥?

从手机拍照到NeRF建模:相机标定参数(内参/外参)到底在忙活啥? 当你用手机拍下一张照片时,是否注意到画面边缘的直线有时会弯曲?或者在使用AR应用时,虚拟物体为何能稳稳"坐"在桌面上&a…...

番茄小说离线阅读神器:fanqienovel-downloader让你的数字图书馆永不消失

番茄小说离线阅读神器:fanqienovel-downloader让你的数字图书馆永不消失 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾经遇到过这样的情况?深夜追更的小说…...

清华PPT模板终极指南:3分钟打造专业学术汇报演示

清华PPT模板终极指南:3分钟打造专业学术汇报演示 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术汇报的PPT设计而烦恼吗?THU-PPT-Theme项目为你提供了一套完整的清华大学…...

如何快速上手开源游戏资源编辑器:Harepacker-resurrected完整实战指南

如何快速上手开源游戏资源编辑器:Harepacker-resurrected完整实战指南 【免费下载链接】Harepacker-resurrected All in one .wz file/map editor for MapleStory game files 项目地址: https://gitcode.com/gh_mirrors/ha/Harepacker-resurrected Harepacke…...

终极指南:如何将闲置电视盒子改造为高性能Armbian服务器

终极指南:如何将闲置电视盒子改造为高性能Armbian服务器 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588…...

5分钟快速上手:Unlock-Music浏览器音乐解密终极指南

5分钟快速上手:Unlock-Music浏览器音乐解密终极指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https:/…...

除了HTB,还有哪些适合新手的网络安全靶场?VulnHub、TryHackMe、PentesterLab横向对比

网络安全新手靶场全指南:从VulnHub到TryHackMe的深度横评 当我在2019年第一次接触网络安全实战训练时,面对琳琅满目的在线靶场平台完全不知所措。作为过来人,我深刻理解新手在选择第一个训练平台时的困惑——HackTheBox(HTB&#…...

Koodo Reader:如何用AI智能助手打造你的终极数字阅读体验

Koodo Reader:如何用AI智能助手打造你的终极数字阅读体验 【免费下载链接】koodo-reader A modern ebook manager and reader with sync and backup capacities for Windows, macOS, Linux, Android, iOS and Web 项目地址: https://gitcode.com/GitHub_Trending/…...

如何通过PDown百度网盘高速下载器免费突破限速:终极指南

如何通过PDown百度网盘高速下载器免费突破限速:终极指南 【免费下载链接】pdown 百度网盘下载器,2020百度网盘高速下载 项目地址: https://gitcode.com/gh_mirrors/pd/pdown PDown是一款完全免费的百度网盘高速下载工具,无需登录账号即…...

【电赛核心代码开源】GPS+IMU 航点导航,小车为什么越跑越偏?一文讲透差速运动学与状态机

前言: 在室外寻迹、物流搬运等电赛题目中,经常要求小车按顺序依次到达几个指定的 GPS 坐标点(路书)。 很多同学把 GPS 解算了,JY901S 的航向角(Yaw)也读出来了,目标方位角也算对了。…...

DL/T 645 协议实战解析:从帧结构到数据采集

1. DL/T 645协议基础入门 第一次接触DL/T 645协议时,我也被那些专业术语搞得一头雾水。但实际用起来才发现,这个协议就像电力行业的"普通话",专门用来让智能电表和采集设备顺畅交流。简单来说,它就是一套规定了电表怎么…...

从农田到屏幕:手把手教你用Python和SNAP批量处理哨兵2号影像,估算作物叶面积指数

从农田到屏幕:手把手教你用Python和SNAP批量处理哨兵2号影像,估算作物叶面积指数 当清晨的阳光洒在万亩麦田上,每一片叶子都在进行着光合作用的精密计算。对于现代农业科技从业者而言,这片绿色海洋中隐藏的数据密码——叶面积指数…...

农业边缘计算新范式(Docker 27原生支持ARM64+实时数据流容器化大揭秘)

第一章:农业边缘计算新范式与Docker 27演进全景农业智能化正从中心云向田间地头迁移,边缘计算不再仅是“补充”,而是成为精准灌溉、病虫害实时识别、农机协同调度的核心基础设施。在低带宽、高时延、设备异构的农田环境中,轻量、可…...

5步终极指南:用FanControl打造静音高效的电脑散热系统

5步终极指南:用FanControl打造静音高效的电脑散热系统 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa…...

Aurora数据引擎:自动驾驶ML工作流加速架构解析

1. 自动驾驶机器学习工作流加速引擎:Aurora数据引擎架构解析在自动驾驶技术研发领域,机器学习模型的迭代效率直接决定了技术突破的速度。作为行业领先的自动驾驶公司,Aurora创新性地构建了名为"数据引擎"的ML编排层,将模…...

LitCAD免费CAD软件终极指南:如何用开源工具完成专业绘图设计

LitCAD免费CAD软件终极指南:如何用开源工具完成专业绘图设计 【免费下载链接】LitCAD A very simple CAD developed by C#. 项目地址: https://gitcode.com/gh_mirrors/li/LitCAD 您是否在寻找一款完全免费、功能强大且易于上手的CAD设计软件?Lit…...

抖音无水印下载工具:从零开始构建个人视频资源库

抖音无水印下载工具:从零开始构建个人视频资源库 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...

事件相机数据处理避坑指南:dv-processing库中EventStore切片与合并的5个高效技巧

事件相机数据处理避坑指南:dv-processing库中EventStore切片与合并的5个高效技巧 在高速视觉领域,事件相机以其微秒级时间分辨率和动态范围优势,正在重塑机器视觉的边界。而当我们真正开始处理这些海量事件流数据时,dv.EventStore…...

读者 30+ 问合集:从“多 Agent 调度不准“到 AI 团队协作避坑指南

上篇文章评论区积攒了几十个问题,挑了最高频的几类,一篇讲完。从概念混淆、环境配置、到多角色协作、国内模型接入,系统梳理。 一、最容易混的三个概念(搞清楚这个,80% 的问题就消解了) 很多朋友把下面三件…...