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

代码随想录leetcode200题之栈与队列

目录

  • 1 介绍
  • 2 训练
  • 3 参考

1 介绍

本博客用来记录代码随想录leetcode200题中栈与队列部分的题目。

2 训练

题目1:232. 用栈实现队列

C++代码如下,

#include <stack>class MyQueue {
private:stack<int> a;stack<int> b; //辅助栈
public:MyQueue() {a = stack<int>();b = stack<int>();}void push(int x) {//先把a中的内容转移到bwhile (!a.empty()) {b.push(a.top());a.pop();}//再将x推入a中a.push(x);//最后将b中的内容转移回awhile (!b.empty()) {a.push(b.top());b.pop();}return;}int pop() {int t = a.top();a.pop();return t;}int peek() {return a.top();}bool empty() {return a.empty();}
};/*** Your MyQueue object will be instantiated and called as such:* MyQueue* obj = new MyQueue();* obj->push(x);* int param_2 = obj->pop();* int param_3 = obj->peek();* bool param_4 = obj->empty();*/

python3代码如下,

class MyQueue:def __init__(self):self.a = []self.b = [] def push(self, x: int) -> None:#将a中内容转移到bwhile len(self.a) > 0:self.b.append(self.a[-1])self.a.pop()#将x推入到a中self.a.append(x)#将b中内容转移回awhile len(self.b) > 0:self.a.append(self.b[-1])self.b.pop()def pop(self) -> int:return self.a.pop()def peek(self) -> int:return self.a[-1]def empty(self) -> bool:return len(self.a) == 0# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()

题目2:225. 用队列实现栈

C++代码如下,

class MyStack {
private:queue<int> a;queue<int> b; //辅助队列 public:MyStack() {a = queue<int>();b = queue<int>();}void push(int x) {//将a中内容转移到bwhile (!a.empty()) {b.push(a.front());a.pop();}//将x推入a中a.push(x);//将b中内容转移回awhile (!b.empty()) {a.push(b.front());b.pop();}return;}int pop() {int t = a.front();a.pop();return t;}int top() {return a.front();}bool empty() {return a.empty();}
};/*** Your MyStack object will be instantiated and called as such:* MyStack* obj = new MyStack();* obj->push(x);* int param_2 = obj->pop();* int param_3 = obj->top();* bool param_4 = obj->empty();*/

python3代码如下,

import queueclass MyStack:def __init__(self):self.a = queue.Queue()self.b = queue.Queue() #辅助队列def push(self, x: int) -> None:#将a中的内容转移到bwhile not self.a.empty():self.b.put(self.a.get())#往a中推入xself.a.put(x)#将b中的内容转移回awhile not self.b.empty():self.a.put(self.b.get())returndef pop(self) -> int:return self.a.get()def top(self) -> int:t = self.a.get()self.push(t)return tdef empty(self) -> bool:return self.a.empty()# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()

题目3:20. 有效的括号

C++代码如下,

class Solution {
public:bool isValid(string s) {stack<char> stk;for (auto c : s) {if (c == '(' || c == '[' || c == '{') {stk.push(c);} else {if (!stk.empty()) {char t = stk.top();stk.pop();if ((t == '(' && c == ')') || (t == '[' && c == ']') || (t == '{' && c == '}')) {//} else {return false;}} else {return false;}}}return stk.empty();}
};

python3代码如下,

class Solution:def isValid(self, s: str) -> bool:stk = []for c in s:if c in "([{":stk.append(c)else:if len(stk) == 0:return Falseelse:t = stk.pop()if (t == '(' and c == ')') or \(t == '[' and c == ']') or \(t == '{' and c == '}'):passelse:return Falsereturn len(stk) == 0

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

C++代码如下,

class Solution {
public:string removeDuplicates(string s) {stack<char> stk;for (auto c : s) {if (stk.empty() || stk.top() != c) {stk.push(c);} else {stk.pop();}}string t;while (!stk.empty()) {t += stk.top();stk.pop();}reverse(t.begin(), t.end());return t;}
};

python3代码如下,

class Solution:def removeDuplicates(self, s: str) -> str:stk = []for c in s:if len(stk) == 0 or stk[-1] != c:stk.append(c)else:stk.pop()res = "".join(stk)return res

题目5:150. 逆波兰表达式求值

C++代码如下,

class Solution {
public:int evalRPN(vector<string>& tokens) {stack<int> stk;string operations = "+-*/";for (auto token : tokens) {if (operations.find(token) == string::npos) {stk.push(stoi(token));} else {int b = stk.top();stk.pop();int a = stk.top();stk.pop();         if (token == "+") stk.push(a+b);else if (token == "-") stk.push(a-b);else if (token == "*") stk.push(a*b);else stk.push(a/b);}}return stk.top();}
};

python3代码如下,

class Solution:def evalRPN(self, tokens: List[str]) -> int:stk = []for token in tokens:if token not in ["+", "-", "*", "/"]:stk.append(int(token))else:b = stk[-1]stk.pop()a = stk[-1]stk.pop()if token == "+":stk.append(a+b)elif token == "-":stk.append(a-b)elif token == "*":stk.append(int(a*b))else:stk.append(int(a/b)) #注意a//b与int(a/b)的区别return stk[-1]

题目6:239. 滑动窗口最大值

C++代码如下,

class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> res;deque<int> q;for (int i = 0; i < nums.size(); ++i) {if (!q.empty() && q.front() < i - k + 1) q.pop_front();while (!q.empty() && nums[q.back()] <= nums[i]) q.pop_back();q.push_back(i);if (i >= k - 1) res.emplace_back(nums[q.front()]);}return res;}
};

python3代码如下,

from collections import dequeclass Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:res = []q = deque()for i in range(len(nums)):if len(q) != 0 and q[0] < i - k + 1:q.popleft()while len(q) != 0 and nums[q[-1]] <= nums[i]:q.pop()q.append(i)if i >= k - 1:res.append(nums[q[0]])return res

题目7:347. 前 K 个高频元素

C++代码如下,

typedef pair<int,int> PII;class Solution {
public:vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int,int> cnt;for (auto x : nums) cnt[x]++;vector<PII> a;for (auto [k, v] : cnt) a.emplace_back(v, k);sort(a.begin(), a.end());reverse(a.begin(), a.end());vector<int> res;for (int i = 0; i < k; ++i) res.emplace_back(a[i].second);return res;}
};

python3代码如下,

from collections import Counterclass Solution:def topKFrequent(self, nums: List[int], k: int) -> List[int]:cnt = Counter(nums)a = cnt.most_common(k)res = [x[0] for x in a]return res

3 参考

代码随想录官网

相关文章:

代码随想录leetcode200题之栈与队列

目录 1 介绍2 训练3 参考 1 介绍 本博客用来记录代码随想录leetcode200题中栈与队列部分的题目。 2 训练 题目1&#xff1a;232. 用栈实现队列 C代码如下&#xff0c; #include <stack>class MyQueue { private:stack<int> a;stack<int> b; //辅助栈 pu…...

使用Python实现2048小游戏

使用Python实现2048小游戏源码分享。实现效果如下所示。 实现效果图 游戏开始效果图 游戏结束效果图 部分源码截图 下载链接 基于如下的运行环境。运行需要安装tkinter /Library/Frameworks/Python.framework/Versions/3.7/bin/python/bin/python /Users/nihui/Documents/P…...

漏洞管理是如何在攻击者之前识别漏洞从而帮助人们阻止攻击的

漏洞管理 是主动查找、评估和缓解组织 IT 环境中的安全漏洞、弱点、差距、错误配置和错误的过程。该过程通常扩展到整个 IT 环境&#xff0c;包括网络、应用程序、系统、基础设施、软件和第三方服务等。鉴于所涉及的高成本&#xff0c;组织根本无法承受网络攻击和数据泄露。如果…...

LNMT部署jpress

LNMT部署jpress 环境要求&#xff1a; MySQL版本5.6/5.7 tomcat版本9.0.65 源码安装MySQL5.7版 //源码安装MySQL5.7版1关闭防火墙 2创建mysql用户 3上传mysql5.7包&#xff08;https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12-x86_64.tar.g…...

汽车软件研发工具链丨怿星科技新产品重磅发布

“创新引领未来”聚焦汽车软件新基建&#xff0c;4月27日下午&#xff0c;怿星科技2024新产品发布会在北京圆满举行&#xff01;智能汽车领域的企业代表、知名大企业负责人、投资机构代表、研究机构代表齐聚现场&#xff0c;线上直播同步开启&#xff0c;共同见证怿星科技从单点…...

Faiss原理及使用总结

Faiss&#xff08;Facebook AI Similarity Search&#xff09;是一个用于高效相似性搜索和密集向量聚类的库。 一、原理 向量表示与相似度度量&#xff1a;在Faiss中&#xff0c;数据通常被表示为高维向量&#xff0c;这些向量可以来自深度学习模型的特征提取&#xff0c;也可…...

跨越智能建筑桥梁:西门子PLC无缝对接BACnet楼宇自动化系统化

智能楼宇每一个环节的互联互通都至关重要&#xff0c;而PLC&#xff08;可编程逻辑控制器&#xff09;作为自动化领域的基石&#xff0c;其与BACnet协议的融合无疑成为了构建智能楼宇神经系统的关键节点。今天&#xff0c;让我们深入探讨如何利用先进的PLC转BACnet协议网关&…...

景源畅信电商:抖音小店有哪些比较热门的宣传方法?

抖音小店的热门宣传方法&#xff0c;是许多商家关注的焦点。在数字化营销时代&#xff0c;有效的宣传手段不仅能提升品牌知名度&#xff0c;还能吸引潜在消费者&#xff0c;促进销售。以下是针对抖音小店热门宣传方法的详细阐述&#xff1a; 一、短视频内容营销 作为抖音的核心…...

兄弟DCP-7057激光打印机报错误代码EC检修及分析

故障描述&#xff1a; 兄弟DCP-7057激光打印机屏幕显示无法打印EC关闭电源&#xff0c;然后重新打开打印机。 故障检修及分析&#xff1a; 1、定影单元风扇的插线连接不良 检查定影单元风扇的插线连接并重新连接&#xff1b; 2、定影单元风扇故障 更换定影单元风扇&#xff1b…...

【华为】IPSec VPN手动配置

【华为】IPSec VPN手动配置 拓扑配置ISP - 2AR1NAT - Easy IPIPSec VPN AR3NATIPsec VPN PC检验 配置文档AR1AR2 拓扑 配置 配置步骤 1、配置IP地址&#xff0c;ISP 路由器用 Lo0 模拟互联网 2、漳州和福州两个出口路由器配置默认路由指向ISP路由器 3、进行 IPsec VPN配置&…...

面试题分享之Java集合篇(三)

注意&#xff1a;文章若有错误的地方&#xff0c;欢迎评论区里面指正 &#x1f36d; 系列文章目录 面试题分享之Java基础篇&#xff08;二&#xff09;面试题分享之Java基础篇&#xff08;三&#xff09; 面试题分享之Java集合篇&#xff08;一&#xff09;、 面试题分享之Ja…...

【python】模拟巴特沃斯滤波器

巴特沃斯滤波器&#xff08;Butterworth Filter&#xff09;&#xff0c;以其设计者斯蒂芬巴特沃斯&#xff08;Stephen Butterworth&#xff09;的名字命名&#xff0c;是一种具有平滑频率响应的滤波器。这种滤波器在频域中具有非常平坦的无波纹响应&#xff0c;直到它达到截止…...

面试题:简述Go的垃圾回收机制

Go的GC(Garbage Collection, 垃圾回收)机制主要是用来自动释放不再被程序使用的内存&#xff0c;以防止内存泄漏。Go的垃圾回收是并发的&#xff0c;也就是说&#xff0c;它在主程序运行的同时进行垃圾回收。 1. 标记清除(Mark and Sweep) Go的垃圾回收器主要使用的是标记清除…...

Vue、React实现excel导出功能(三种实现方式保姆级讲解)

第一种&#xff1a;后端返回文件流&#xff0c;前端转换并导出&#xff08;常用&#xff0c;通常公司都是用这种方式&#xff09; 第二种&#xff1a;纯后端导出&#xff08;需要了解&#xff09; 第三种&#xff1a;纯前端导出&#xff08;不建议使用&#xff0c;数据处理放…...

初识C语言——第十六天

C语言中的语句结构类型:顺序/选择/循环 分支语句 if else switch 循环语句 while for do whlie goto语句 代码练习:找两个整数的最大公约数和最小公倍数 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>//int main() //{ // int age 60; // if (ag…...

Vue的省份联动

Vue的省份联动 一、安装依赖库 npm install element-china-area-data -Snpm install element-ui --save全局使用elemntui组件库 import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css;Vue.use(ElementUI);二 、代码如下 <template><div…...

element-ui skeleton 组件源码分享

今日简单分享 skeleton 骨架屏组件源码&#xff0c;主要从以下四个方面来讲解&#xff1a; 1、skeleton 组件的页面结构 2、skeleton 组件的属性 3、skeleton item 组件的属性 4、skeleton 组件的 slot 一、skeleton 组件的页面结构 二、skeleton 组件的属性 2.1 animate…...

深度学习:基于TensorFlow、Keras,使用长短期记忆神经网络模型(LSTM)对Microsoft股票进行预测分析

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…...

【websocket-客户端可视化工具】

postman 新版postman (版本v11以上) &#xff0c;除了http协议&#xff0c;还支持了Websocket&#xff0c;MQTT&#xff0c;gRPC等多种连接协议&#xff0c;可以作为多种协议的客户端&#xff0c;使用起来非常方便。 使用 服务端代码 这里以websocket协议举例&#xff0c;代…...

STC8增强型单片机开发——C51版本Keil环境搭建

一、目标 了解C51版本Keil开发环境的概念和用途掌握C51版本Keil环境的安装和配置方法熟悉C51版本Keil开发环境的使用 二、准备工作 Windows 操作系统Keil C51 安装包&#xff08;可以从Keil官网下载&#xff09;一款8051单片机开发板 三、搭建流程 环境搭建的基本流程&#xf…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

​​企业大模型服务合规指南:深度解析备案与登记制度​​

伴随AI技术的爆炸式发展&#xff0c;尤其是大模型&#xff08;LLM&#xff09;在各行各业的深度应用和整合&#xff0c;企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者&#xff0c;还是积极拥抱AI转型的传统企业&#xff0c;在面向公众…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...

结构化文件管理实战:实现目录自动创建与归类

手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题&#xff0c;进而引发后续程序异常。使用工具进行标准化操作&#xff0c;能有效降低出错概率。 需要快速整理大量文件的技术用户而言&#xff0c;这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB&#xff0c;…...