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

【代码随想录】算法训练营 第十一天 第五章 栈与队列 Part 2

20. 有效的括号

题目

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

思路

用栈来匹配是最好的选择,将字符串的每个字符与栈顶元素匹配,如果栈为空或者不匹配,就将字符进栈,每次匹配成功就可以将栈顶元素弹出,如果字符串有效,那么栈里最后是不会有元素的。

代码

class Solution {
public:bool isValid(string s) {stack<char> st;if (s.size() % 2)return false;for (int i = 0; i < s.size(); i++) {if (st.empty()) {st.push(s[i]);continue;}if (s[i] == '(' || s[i] == '{' || s[i] == '[') {st.push(s[i]);}else if ((s[i] == ')' && st.top() == '(') || (s[i] == '}' && st.top() == '{') || (s[i] == ']' && st.top() == '[')) {st.pop();}else {st.push(s[i]);}}if (st.empty())return true;elsereturn false;}
};

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

题目

思路

和上一题一样,只不过这题要注意最后留下的字符串是要输出的,所以我们一开始遍历原字符串时就要从最后一个遍历,这样塞进栈里的字符串顺序是反的,最后再把栈里的字符串输出到一个新定义的字符串即可,注意定义字符串的格式是 string str(length, '  ') 括号中前一个参数是字符串的长度,后一个是用什么字符填充这个字符串。

代码

class Solution {
public:string removeDuplicates(string s) {stack<int> st;int len = 0;for (int i = s.size() - 1; i >= 0; i--) {if (st.empty()) {st.push(s[i]);len++;}else if (s[i] == st.top()) {st.pop();len--;}else {st.push(s[i]);len++;}}string ss(len, ' ');int k = 0;while (len--) {ss[k] = st.top();st.pop();k++;}return ss;}
};

150. 逆波兰表达式求值

题目

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

注意:

  • 有效的算符为 '+''-''*' 和 '/' 。
  • 每个操作数(运算对象)都可以是一个整数或者另一个表达式。
  • 两个整数之间的除法总是 向零截断 。
  • 表达式中不含除零运算。
  • 输入是一个根据逆波兰表示法表示的算术表达式。
  • 答案及所有中间计算结果可以用 32 位 整数表示。

思路

理解了逆波兰式的输入就很好办了,和上面两题异曲同工,而且这道题不会有需要特判的情况,所以只需要遇到符号就取栈顶元素计算即可,唯一要注意的是这里面的数据类型转换,把string类型变成int型用stoll。

代码

class Solution {
public:int evalRPN(vector<string>& tokens) {stack<long long> st;for (int i = 0; i < tokens.size(); i++) {if (tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/") {int num2 = st.top();st.pop();int num1 = st.top();st.pop();if (tokens[i] == "+") st.push(num1 + num2);if (tokens[i] == "-") st.push(num1 - num2);if (tokens[i] == "*") st.push(num1 * num2);if (tokens[i] == "/") st.push(num1 / num2);}else {st.push(stoll(tokens[i]));}}int result = st.top();st.pop();return result;}
};

相关文章:

【代码随想录】算法训练营 第十一天 第五章 栈与队列 Part 2

20. 有效的括号 题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一…...

mysql 启动报错 Can t change dir to xxx, No such file or directory 配置错误或挂载导致

省流&#xff1a; 挂载的话&#xff0c;使用 /etc/fstab 放fstab里会在程序启动前加载NFS文件系统&#xff0c;放rc.local里往往造成程序启动加载时找不到路径。 正文&#xff1a; 在企业中&#xff0c;服务器重启&#xff0c;有时候会遇到mysql 启动报错 Cant change dir …...

AWS SAA-C03考试知识点整理

S3&#xff1a; 不用于数据库功能 分类&#xff1a; S3 Standard &#xff1a;以便频繁访问 S3 Standard-IA 或 S3 One Zone-IA &#xff1a; 不经常访问的数据 Glacier&#xff1a; 最低的成本归档数据 S3 Intelligent-Tiering智能分层 &#xff1a;存储具有不断变化或未知访问…...

HugeGraph 部署和Hubble1.0.0的数据导入Bug修复

背景 HugeGraph 安装部署了最新版本1.0.0&#xff0c;发现它的 Web 工具 Hubble 有一个大 Bug。数据导入的时候&#xff0c;配置节点属性映射这个选项时&#xff0c;下拉框只有一个选项&#xff0c;但实际上&#xff0c;元数据配置中的属性有3个&#xff0c;这个 Bug 是怎么产…...

01、字符传实现为什么是SDS而不是char*?

问题&#xff1a; 1. sds 是什么 &#xff1f; 2. sds 相对于char * 有什么好处 &#xff1f;解决了哪些疑难杂症&#xff1f; 3. sds 有什么不足&#xff1f;可以优化的点&#xff1f; 思考下&#xff1a; 平常工作开发中&#xff0c;我们记录一条用户信息、订单信息&…...

顺应趋势,用大数据精准营销抓住大数据时代的机遇

想先问大家一个问题&#xff1a;“你觉得现在的营销好做吗&#xff1f;”想必大多数人在说到自己如何营销这一点上&#xff0c;都有道不完的“苦水”。“现在找客户难&#xff0c;投了几十万的广告费&#xff0c;真正来的客户却少得可怜&#xff0c;平均获客成本高得吓人”一位…...

面向石油和天然气的计算机视觉和深度学习1

面向石油和天然气的计算机视觉和深度学习1 1. 好处1.1 安全1.2 生产优化与估算&#xff08;Production Optimization and Estimation&#xff09;1.3 降低生产和维护成本&#xff08;Reduce Production and Maintenance Costs&#xff09; 2. 应用2.1 维护2.1.1 预测维护&#…...

微信小程序三种授权登录以及授权登录流程讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《微信小程序开发实战》。&#x1f3af;&#x1f3a…...

C现代方法(第10章)笔记——程序结构

文章目录 第10章 程序结构10.1 局部变量10.1.1 静态局部变量10.1.2 形式参数 10.2 外部变量10.2.1 示例&#xff1a;用外部变量实现栈10.2.2 外部变量的利与弊 10.3 程序块10.4 作用域10.5 构建C程序10.5.1 复杂程序&#xff1a;给一手牌分类 问与答写在最后 第10章 程序结构 …...

解密Web安全:Session、Cookie和Token的不解之谜

解密Web安全&#xff1a;Session、Cookie和Token的不解之谜 前言第一部分&#xff1a;什么是Session、Cookie和Token1. Session&#xff08;会话&#xff09;:2. Cookie&#xff08;HTTP Cookie&#xff09;:3. Token&#xff08;令牌&#xff09;:比较&#xff1a; 第二部分&a…...

1016 部分A+B

#include<bits/stdc.h> using namespace std; int main(){string str1;string str2;int a,b;cin>>str1>>a>>str2>>b;int a10;int a20;for(auto t:str1){if(t-0a){a1a1*10a;}}for(auto t:str2){if(t-0b){a2a2*10b;}}cout<<a1a2; }...

搭建react项目

一、环境准备 1、安装node 官网下载安装&#xff1a;https://nodejs.org/en 注&#xff1a; npm5.2以后&#xff0c;安装node会自动安装npm和npx 2、安装webpack npm install -g webpack3、安装create-react-app npm install -g create-react-app二、创建react项目 1、初…...

Hive跨集群数据迁移过程

文章目录 环境数据迁移需求迁移过程记录 环境 Hive集群AHive集群B跳转机一台 数据迁移需求 本次迁移数据100G&#xff0c;15亿条&#xff0c;数据流转方向从集群A经过跳转机到集群B&#xff0c;通过HDFS拉取和重新建表导入的方式完成数据库迁移。 迁移过程记录 - 当前操作…...

中国移动启动算网大脑“天穹”全网试商用

10月12日&#xff0c;中国移动在2023全球合作伙伴大会主论坛正式启动算网大脑“天穹”全网试商用&#xff0c;全面开启算力网络2.0新征程&#xff0c;标志着中国移动算力网络迈向“融合统一”新阶段。 为落实国家“东数西算”战略&#xff0c;中国移动开创性提出算力网络新理念…...

apk和小程序渗透

apk和小程序域服务器通信使用的还是http协议&#xff0c;只是使用了加密。只要可以获取到http的请求报文&#xff0c;就可以回归到web渗透的层面。apk和小程序的渗透很复杂&#xff0c;涉及逆向时要进行脱壳&#xff0c;脱壳后反编译了&#xff0c;源代码没做加密就能直接逆向出…...

播放svga动画的时候 第一次加载资源,然后切换动画 会动画会重影

如果在切换 SVGA 动画的过程中&#xff0c;第一次加载时出现重影&#xff0c;但第二次及以后的切换没有重影&#xff0c;这可能是由于第一次加载时资源缓存不完整导致的。为了解决这个问题&#xff0c;你可以尝试以下方法&#xff1a; 1.在每次切换动画之前&#xff0c;预先加…...

如何实现前端音频和视频播放?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...

chatgpt 4V 识图功能

1.获取图片的sig和file_id 2e0edc6e489ed13a3f32f0dd87527d77.jpg是本地图片的名字 头部认证信息自己F12 抓取 1.获取图片的sighttps://chat.openai.com/backend-api/filesAuthorization:Bearer eyJhbGc****************5V-lztYwLb9hr6LP7g Cookie: **********************…...

展馆导览系统之AR互动式导航与展品语音讲解应用

一、项目背景 随着科技的进步和人们对于文化、艺术、历史等方面需求的提升&#xff0c;展馆在人们的生活中扮演着越来越重要的角色。然而&#xff0c;传统的展馆导览方式&#xff0c;如纸质导览、人工讲解等&#xff0c;已无法满足参观者的多元化需求。为了提升参观者的体验&a…...

Rust 中的String与所有权机制

文章目录 一、string二、所有权2.1 所有权与作用域2.2 对所有权的操作2.2.1 转移2.2.3 拷贝2.2.3 传递 2.3 引用2.3.1 借用2.3.2 可变引用 一、string 之前学习过 Rust 只有几种基础的数据类型&#xff0c;但是没有常用的字符串也就是String&#xff0c;今天来学习一下 String…...

深入浅出EMMC协议:图解单块读写背后的CMD与DATA握手流程

深入浅出EMMC协议&#xff1a;图解单块读写背后的CMD与DATA握手流程 当我们需要从嵌入式设备中读取一个512字节的数据块时&#xff0c;EMMC存储芯片内部究竟发生了什么&#xff1f;这个看似简单的操作背后&#xff0c;隐藏着一套精密的数字握手协议。本文将用工程师的视角&…...

3个步骤彻底告别C盘爆红:Windows Cleaner开源清理工具使用指南

3个步骤彻底告别C盘爆红&#xff1a;Windows Cleaner开源清理工具使用指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否也经历过这样的场景&#xff1a;…...

Qwen3-TTS VoiceDesign快速上手:CLI命令行模式调用、JSON输出与自动化脚本集成

Qwen3-TTS VoiceDesign快速上手&#xff1a;CLI命令行模式调用、JSON输出与自动化脚本集成 1. 引言 你是不是觉得语音合成模型用起来很麻烦&#xff1f;要么得打开一个网页界面&#xff0c;手动输入文字、选择参数&#xff0c;要么就得写一堆复杂的Python代码&#xff0c;调试…...

从Kaggle到GitHub:手把手教你用Colab打造云端AI开发流水线

从Kaggle到GitHub&#xff1a;手把手教你用Colab打造云端AI开发流水线 在AI项目开发中&#xff0c;数据科学家常面临环境配置繁琐、计算资源不足、协作效率低下三大痛点。Google Colab作为云端Jupyter Notebook服务&#xff0c;不仅提供免费GPU/TPU资源&#xff0c;更通过深度集…...

哔哩下载姬:解锁B站视频离线观看的5个关键技巧

哔哩下载姬&#xff1a;解锁B站视频离线观看的5个关键技巧 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。…...

Phi-mini-MoE-instruct真实生成效果:MATH竞赛题分步推导+LaTeX公式渲染效果展示

Phi-mini-MoE-instruct真实生成效果&#xff1a;MATH竞赛题分步推导LaTeX公式渲染效果展示 1. 模型能力概览 Phi-mini-MoE-instruct是一款轻量级混合专家&#xff08;MoE&#xff09;指令型小语言模型&#xff0c;在多个基准测试中展现出卓越性能&#xff1a; 代码能力&…...

Windows下ESP-IDF多版本环境高效管理实战

1. Windows下ESP-IDF多版本管理的必要性 如果你正在Windows平台上开发ESP32项目&#xff0c;很可能会遇到这样的场景&#xff1a;手头同时维护着基于不同ESP-IDF版本的项目&#xff0c;或者需要测试新版本特性但不敢贸然升级现有环境。这时候&#xff0c;多版本环境管理就成了刚…...

从传统机器学习到智能体AI系统的实践指南

1. 从传统机器学习到智能体AI系统的实践指南作为一名长期奋战在机器学习一线的从业者&#xff0c;我见证了从传统监督学习到深度学习&#xff0c;再到如今智能体AI系统的技术演进。这种转变不仅仅是模型架构的升级&#xff0c;更代表着AI系统设计范式的根本性变革。本文将分享如…...

FLUX.1-Krea-Extracted-LoRA快速试用:3个高转化率电商提示词模板分享

FLUX.1-Krea-Extracted-LoRA快速试用&#xff1a;3个高转化率电商提示词模板分享 1. 模型介绍与核心价值 FLUX.1-Krea-Extracted-LoRA是从FLUX.1-Krea-dev基础模型中提取的LoRA风格权重&#xff0c;专为FLUX.1-dev设计。这个模型最大的特点是能够显著减少AI生成图像常见的&qu…...

React 转 Vue3 迁移实战:从0到1

一、前言从 React 转 Vue3&#xff0c;相信很多前端工程师都有过这个经历。两者虽然都致力于"构建用户界面"&#xff0c;但设计思想、API 风格、状态管理机制都有本质差异。本文专门针对 React 开发者视角&#xff0c;对照讲解 Vue3 的核心概念&#xff0c;帮助你快速…...