stack(leetcode练习题)

文章目录

  • STL用法总结
    • 32 最长有效括号
      • 思路
      • 代码
    • 496 下一个最大元素
      • 思路
      • 代码
    • 856 括号的分数
      • 思路

STL用法总结

关于stack的知识,可以看点击查看上面的博客,以下题目全在leetcode

32 最长有效括号

在这里插入图片描述

思路

“(()”
“()(()”
“(()(((()”
最开始写的,总会有一些样例过不了,没考虑全,后来看题解上的方法,将下标压入栈中,用右括号的下标减去栈顶下标,就是有效长度。看来那位讲题同学说的,先忽略最长是有道理。不然只顾着最长,反而无法得到正确的有效长度。

代码

  class Solution {
public:int longestValidParentheses(string s) {stack<int> k;int l=0,r=0,ans=0 ;k.push(-1);//初始化,压栈for(int i=0;i<s.size();i++){if(s[i]=='('){k.push(i);}else{k.pop();if(k.empty())k.push(i);elseans=max(ans,i-k.top());}}return ans;}
};

496 下一个最大元素

在这里插入图片描述

思路

运用栈,可以很好解决。要找下一个最大元素。可以将数组倒着入栈。如果数字比栈顶小就压入,否则,将栈顶删除直到,比栈顶小或这栈为空。此时栈顶就是答案,为空则标记为-1;

代码

class Solution {
public:int a[10050];vector<int> nextGreaterElement(vector<int>& nums1,          vector<int>& nums2) {stack<int> k;vector<int> v;for(int i=nums2.size()-1;i>=0;i--){while(!k.empty()&&nums2[i]>=k.top()){k.pop();}if(k.size()==0) a[nums2[i]]=-1;else a[nums2[i]]=k.top();k.push(nums2[i]);}for(int i=0;i<nums1.size();i++)v.push_back(a[nums1[i]]);return v;}
};

856 括号的分数

在这里插入图片描述

思路

一个完整的括号,要么是1,要么里边包含其他括号,进行了 *2。所以,可以每遇到一个右括号,进行一次运算,第一次为 1,以后每次乘二,累加到栈顶。遇到左括号,就向栈压入0,重新运算,当遇到右括号,再弹出.

class Solution {
public:int scoreOfParentheses(string s) {stack<int> k;k.push(0);//先推入0,防止k为空for (int i=0;i<s.size();i++) {if (s[i] == '(') {k.push(0);} else {int v = k.top();k.pop();k.top() += max(2 * v, 1);}}return k.top();}
};

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

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

相关文章

Linux下docker快速安装gitea

之前在服务器上装的gitlab来管理个人项目&#xff0c;但是gitlab服务启动后能明显感受到占用资源比较严重。最近服务器到期&#xff0c;换了个服务器还没来得及装gitlab&#xff0c;刚好最近接触到gitea&#xff0c;网上是这么说的 占用资源少&#xff0c;适合个人开发者&…

[PM]数据分析

概览 数据的定义 运营数据 分析的目的 数据分析流程 1.明确目标 2.数据来源 3.采集数据 4.数据整理 5.数据分析 趋势分析 当数据出现异常&#xff0c;一般从3个角度去查找问题&#xff1a; 1.技术层面&#xff0c;是不统计出错&#xff0c;或者产品出现bug 工 2.产品层面&am…

连接hive库增加相关包

连接hive库增加相关包 例如&#xff1a;java.lang.NoClassDefFoundError: com/ctc/wstx/io/InputBootstrapper org.apache.hadoop.hive.common.auth.HiveAuthUtils java.lang.NoClassDefFoundError: org/codehaus/stax2/XMLInputFactory2

0711springNews新闻系统管理 实现多级评论

0611springmvc新闻系统管理-CSDN博客 0711springNews新闻系统管理项目包 实现多级评论-CSDN博客 数据库字段 需要添加父节点id&#xff0c;通过该字段实现父评论和子评论的关联关系。 对象属性 实现链表&#xff0c;通过一个父评论可以找到它对应的所有子孙评论。 业务层 实现…

Capture软件元件库(以STM32为例)

本教程基于【凡亿】Cadence Allegro 17.4零基础入门66讲PCB Layout设计实战视频 &#xff08;一&#xff09;自带库路径查找 1&#xff0c;首先在找到文件的快捷方式 2&#xff0c;右键打开文件所在位置 3&#xff0c;点击tools&#xff08;上一级目录&#xff09; 4&#xf…

数据库最佳实践:优化爬虫管理的数据存储方案

摘要&#xff1a; 面对日益增长的数据抓取需求&#xff0c;如何高效管理和存储爬虫获取的海量信息成为一大挑战。本文将深入探讨数据库最佳实践&#xff0c;揭示如何通过优化策略提升爬虫数据存储效率&#xff0c;助您跨越数据管理的障碍&#xff0c;实现数据价值最大化。 一、…

SpringBoot+Vue(3)Excel的在线预览

一、思路 在Spring Boot和Vue.js的组合中实现Excel文件的在线预览功能&#xff0c;通常涉及到几个关键步骤&#xff1a;文件上传、文件存储、文件读取、以及通过前端展示Excel内容。由于Excel文件本身不是直接可以在网页上渲染的格式&#xff0c;我们通常需要将Excel文件转换为…

SpringMVC源码深度解析(下)

接着上一遍博客《SpringMVC源码深度解析(中)》继续聊。上一篇博客中&#xff0c;返回的是对象的情况下SpringMVC框架会怎么处理&#xff0c;这种情况也是现在用得最多的&#xff0c;因为都是前后端分离。如果返回的是ModelAndView&#xff0c;则是另外的处理逻辑了&#xff0c;…

稀疏支持向量机(Sparse Support Vector Machine, Sparse SVM)

稀疏支持向量机&#xff08;Sparse Support Vector Machine, Sparse SVM&#xff09; 稀疏支持向量机是一种在支持向量机的基础上&#xff0c;通过引入稀疏性约束&#xff0c;使得模型参数更加稀疏&#xff0c;从而提高模型的可解释性和计算效率的方法。以下是稀疏支持向量机的…

Ideal窗口中左右侧栏消失了

不知道大家在工作过程中有没有遇到过此类问题&#xff0c;不论是Maven项目还是Gradle项目&#xff0c;突然发现Ideal窗口右侧图标丢失了&#xff0c;同事今天突然说大象图标不见了&#xff0c;不知道怎样刷新gradle。 不要慌张&#xff0c;下面提供一些解决思路&#xff1a; 1…

LeetCode 232.用栈实现队列 C写法

LeetCode 232.用栈实现队列 C写法 思路&#x1f9d0;&#xff1a; 栈代码在本篇中。与队列实现栈类似&#xff0c;不过这里我们建立两个栈&#xff0c;一个栈专门存放入队数据&#xff0c;一个专门存放出队数据&#xff0c;不需要再来回导数据。原理在于一个栈的数据到另一个栈…

Windows右键新建Markdown文件类型配置 | Typora | VSCode

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 今天毛毛张分享的是如何在右键的新建菜单中添加新建MarkdownFile文件&#xff0c;这是毛毛张分享的关于Typora软件的相关知识的第三期 文章目录 1.前言&#x1f3dd;…

「MQTT over QUIC」与「MQTT over TCP」与 「TCP 」通信测试报告

一、结论 在实车5G测试中「MQTT Over QUIC」整体表现优于「TCP」&#xff0c;可在系统架构升级时采用MQTT Over QUIC替换原有的TCP通讯&#xff1b;从实现原理上基于QUIC比基于TCP在弱网、网络抖动导致频繁重连场景延迟更低。 二、测试方案 网络类型&#xff1a;实车5G、实车…

Easysearch、Elasticsearch、Amazon OpenSearch 快照兼容对比

启动集群 Easysearch sysctl -w vm.max_map_count262144Amazon OpenSearch Elasticsearch 由于这个docker compose没有关于kibana的配置&#xff0c;所以我们还是用Console添加原生的Elasticsearch集群 集群信息 快照还原的步骤 快照前的准备 插件安装 本次测试选择把索…

生产力工具|Endnote 21 Macwin版本安装

一、软件下载&#xff1a; &#xff08;一&#xff09;mac版本 Endnote 21版本下载&#xff1a;点击下载 Endnote 20版本下载&#xff1a;点击下载 Endnote X9版本下载&#xff1a;点击下载 &#xff08;二&#xff09;Endnote 20 Win版本 第一步&#xff1a;安装好官网软…

【技术前沿 | AI Native应用新纪元:深度解析模型微调的艺术】

在这个智能化浪潮席卷全球的今天&#xff0c;AI技术已经不再是遥不可及的未来概念&#xff0c;而是深深地融入了我们的日常生活与工作中。从智能家居到自动驾驶&#xff0c;从智能客服到医疗诊断&#xff0c;AI正以它独有的方式改变着世界。而在这一过程中&#xff0c;AI Nativ…

随手记:推荐vscode好用的几个小插件

原始用了挺久的插件&#xff0c;先上截图&#xff0c;以后有空再编辑&#xff1a; fittenCode 是一个AI小助手&#xff0c;相对来说很智能&#xff0c;你在vscode当中编写代码&#xff0c;甚至都可以知道你下一步知道干嘛&#xff0c;训练的还可以。而且还可以帮你起名字&…

2024年7月17日(nodejs,npm设置国内镜像,vue脚手架,远程管理ssh,踢出用户,scp命令,ssh免密登录)

1、安装nodejs服务 nodejs是一个运行1环境&#xff0c;和javajdk运行环境格式一样 [roota ~]# yum -y install nodejs.x86_64 安装完成之后&#xff0c;使用node -v 查看版本 [roota ~]# node -v v16.20.2 2、简易服务器的环境安装npm 安装包管理器 npm node packae manger [ro…

云计算实训09——rsync远程同步、自动化推取文件、对rsyncd服务进行加密操作、远程监控脚本

一、rsync远程同步 1.rsync基本概述 &#xff08;1&#xff09;sync同步 &#xff08;2&#xff09;async异步 &#xff08;3&#xff09;rsync远程同步 2.rsync的特点 可以镜像保存整个目录树和文件系统 可以保留原有权限&#xff0c;owner,group,时间&#xff0c;软硬链…

数据分析入门:用Python和Numpy探索音乐流行趋势

一、引言 音乐是文化的重要组成部分&#xff0c;而音乐流行趋势则反映了社会文化的变迁和人们审美的变化。通过分析音乐榜单&#xff0c;我们可以了解哪些歌曲或歌手正在受到大众的欢迎&#xff0c;甚至预测未来的流行趋势。Python作为一种强大的编程语言&#xff0c;结合其丰…