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();}
};

最优屏障

在这里插入图片描述

思路

开始没理解对,max(,)<min()的意义,两个相邻的山,也是可以监视的。
这个数据范围也不是很大,可以计算,屏障放在每座山分别可以阻碍多少对,再输出最大的就可以了。用一个栈,只存放比栈顶小的,遇到大的就pop,直到为空,这样当一个大的数字,它就可以与前面的形成监视,并让比他小的出栈,更好计算后面数字与栈中形成的监视。用一个b数组计算某处可阻挡的对数。在区间中循环,使b[i]++;

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int a[50050],b[50050],x;
stack<int> k;
void solve()
{while(!k.empty()) k.pop();int n,ma=1;memset(b,0,sizeof(b));//b用来记录放在i处,防守能力的减少量cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++){if(k.empty()||a[i]<a[k.top()])k.push(i);//将递减的数字下标推进kelse{while(!k.empty()&&a[i]>a[k.top()])//非空需要写在前面{for(int j=k.top()+1;j<=i;j++)//a[i]>a[k.top()],k.top()与a[i]组成一对,中间每个地方放都会阻碍{if(k.top()!=i-1)//相邻的先不加,防止重复b[j]++;}k.pop();}if(!k.empty())//如果不为空,pop过程中遇到的第一个比a[i]大的,也能和a[i],组一对{for(int j=k.top()+1;j<=i;j++){if(k.top()!=i-1)b[j]++;}	}k.push(i);}}	b[1]=0;//放在第一个前面谁都阻碍不了for(int i=2;i<=n;i++){b[i]++;//加上相邻的两个所组成的对数if(b[ma]<b[i])ma=i;}cout<<"Case #"<<x<<": "<<ma<<" "<<b[ma]<<'\n';
}
signed main()
{IOSint t;cin>>t;for(x=1;x<=t;x++)solve();
}

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

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

相关文章

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十章 Linux设备树

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

C++类别(建构函数、初值串列、EXPLICIT指示词)

类别- 类别(class) 是物件(object) 的模板&#xff0c;物件的所有功能都由类别设置。 典型的类别设计如下 class class_name { access_label_1:// memberaccess_label_2:// member }; 利用关键字(keyword) class宣告类别名称&#xff0c;其后的大括弧为类别的宣告内容&…

代理IP在数据采集中具体有哪些作用

在当今信息化高速发展的时代&#xff0c;从市场趋势分析到消费者行为预测&#xff0c;从产品优化到服务改进&#xff0c;大数据都在其中扮演着不可或缺的角色。但数据的采集、整理和分析并非易事&#xff0c;特别是在面对海量的网络数据时&#xff0c;我们往往需要借助一些技术…

python3.12 String类方法大全

字符串相关链接 类型细分与链接注释 字面值 转义字符字符串字符串基础方法拼接, 索引, 路径, 长字符串分行等等内置类型str 字符串的方法 见下表 printf 风格的字符串格式化 format % values 标准库string 字符串常量字符串模块中定义的常量class string.Formatter 自定义字符…

前端 SSE 长连接

使用 const options {withCredentials: true, // 默认 false}const eventSource new EventSource(/api, options);eventSource.addEventListener(open, () > {});eventSource.onmessage (event) > {}; // 或addEventListener(message,callback)eventSource.addEvent…

程序员拔火罐技能的分享

一.背景 之前为了考“中医康复理疗师”的证书&#xff0c;自学了拔火罐。自学主要是在自己大腿上练习&#xff0c;然后拿家人做小白鼠。后来考试没有那么严格也就顺利通过了。操作过程中&#xff0c;积累的一些小知识&#xff0c;分享给大家&#xff0c;有空在家里给家人服务体…

CTF ssrf 基础入门 (一)

0x01 引言 我发现我其实并不是很明白这个东西&#xff0c;有些微妙&#xff0c;而且记忆中也就记得Gopherus这个工具了&#xff0c;所以重新学习了一下&#xff0c;顺便记录一下吧 0x02 辨别 我们拿到一个题目&#xff0c;他的名字可能就是题目类型&#xff0c;但是也有可能…

【CSS】继承属性

属性继承 1. 字体系列属性 字体系列属性主要包括&#xff1a; font-size、font-family、font-variant、font-style、font-weight、font、letter-spacing、word-spacing、text-transform 和 line-height。如果没有在⼀个元素上设置这些属性&#xff0c;则其继承上层的相应属性…

FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 回复留言

源码见&#xff1a;"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 之前文章分享FastAPI&#xff08;七十二&#xff09;实战开发《在线课程学习系统》接口开发-- 留言列表开发&#xff0c;这次我们分享如何回复留言 按…

Jenkins+Gitlab持续集成综合实战

一、持续集成应用背景&#xff1a; DevOps&#xff1a;&#xff08;英文Development&#xff08;开发&#xff09;和Operations&#xff08;技术运营&#xff09;的组合&#xff09;是一组过程、方法与系统的统称&#xff0c;用于促进开发&#xff08;应用程序/软件工程&#…

NCRE3 2-1 网络总体设计基本方法

这部分记忆的比较多 概览 设计网络建设总体目标确定网络系统方案设计原则网络系统总体设计设计网络拓扑结构进行网络设备选型网络系统安全设计 设计网络建设总体目标 这部分视频没说到 确定网络系统方案设计原则 这部分视频没说到 网络系统总体设计 核心层网络结构设计 …

Mysql的MHA

Mysql的MHA 一、MHA 1、什么是MHA&#xff1f; 高可用模式下的故障切换&#xff0c;基于主从复制 单点故障和主从复制不能切换的问题 至少需要3台 故障切换过程0~30秒 vip地址&#xff0c;根据vip地址所在的主机&#xff0c;确定主备 主 vip 备 vip 主和备不是优先确定…

嵌入式Linux八股(四)——MCURTOS

嵌入式Linux八股完整文章目录 嵌入式Linux八股&#xff08;一&#xff09;——语言篇_嵌入式软件八股-CSDN博客 嵌入式Linux八股&#xff08;二&#xff09;——Linux_linux嵌入式的八股文有哪些-CSDN博客 嵌入式Linux八股&#xff08;三&#xff09;——计算机基础_嵌入式哪…

DM(DataMart)增量表

DM&#xff08;DataMart&#xff09;增量表通常指的是在数据仓库或数据集市中的增量表。这些表格用于存储每日或每周等时间段内新增的数据&#xff0c;以便在后续的分析和报告中使用。 特点和作用&#xff1a; 1.存储增量数据&#xff1a;DM增量表存储了相对于上一次抽取或加载…

【Vue实战教程】之Vue工程化项目详解

Vue工程化项目 随着多年的发展&#xff0c;前端越来越模块化、组件化、工程化&#xff0c;这是前端发展的大趋势。webpack是目前用于构建前端工程化项目的主流工具之一&#xff0c;也正变得越来越重要。本章节我们来详细讲解一下如何使用webpack搭建Vue工程化项目。 1 使用we…

基于Python的哔哩哔哩国产动画排行数据分析系统

需要本项目的可以私信博主&#xff0c;提供完整的部署、讲解、文档、代码服务 随着经济社会的快速发展&#xff0c;中国影视产业迎来了蓬勃发展的契机&#xff0c;其中动漫产业发展尤为突出。中国拥有古老而又璀璨的文明&#xff0c;仅仅从中提取一部分就足以催生出大量精彩的…

【C# 】 一个List<T> 如何快速的知道里面的最大、最小、平均值呢?

在C#中&#xff0c;要从一个List<T>中找到最大值、最小值和平均值&#xff0c;首先需要确保列表中的元素类型支持这些操作&#xff08;例如int、ushort或double&#xff09;。 这里使用LINQ&#xff08;Language Integrated Query&#xff09;来简化这些计算。 如果使用…

源码拆解SpringBoot的自动配置机制

SpringBoot相比于Spring系列的前作&#xff0c;很大的一个亮点就是将配置进行了简化&#xff0c;引入了自动化配置&#xff0c;仅靠几个注解和yml文件就取代了之前XML的繁琐配置机制&#xff0c;这也是SpringBoot的独有特点&#xff0c;下面我们从源码角度&#xff0c;一点点拆…

Golang | Leetcode Golang题解之第273题整数转换英文表示

题目&#xff1a; 题解&#xff1a; var (singles []string{"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"}teens []string{&…

IEC61850 协议解读

1. IEC61850 协议介绍 IEC 61850 是定义 变电站 自动化系统 中 设备 及设备之间相互交互的 国际标准。 给出英文定义&#xff1a;IEC 61850 is the international standard for defining devices within substation automation systems and how they interact with one anoth…