当前位置:网站首页>【题解报告】--- 1614. 括号的最大嵌套深度 1381. 设计一个支持增量操作的栈
【题解报告】--- 1614. 括号的最大嵌套深度 1381. 设计一个支持增量操作的栈
2022-08-07 05:13:00 【丶亻氵每天氵一氵】
前言
每日氵题(7月14日)
一、练习题目
题目一:LeetCode |1614. 括号的最大嵌套深度
题目二:LeetCode |1381. 设计一个支持增量操作的栈
二、思路和代码
1. 括号的最大嵌套深度
遍历字符串,如果遇到了一个左括号,那么就将其入栈;如果遇到了一个右括号,那么就弹出栈顶的左括号,与该右括号匹配。并且记录栈到最大值。
对于本题,代码实现的时候,我们只需要记录栈的大小。
class Solution {
public:
int maxDepth(string s) {
int size = 0, ans = 0;
for(int i = 0; i < s.length(); ++i){
if( s[i] == '('){
++size; //(1)
}
else if( s[i] == ')' ){
--size; //(2)
}
ans = max(ans, size); //(3)
}
return ans;
}
};
(1)遇到左括号,栈的大小 +1
(2)遇到右括号,栈的大小 -1
(3)记录栈的最大深度
复杂度分析
时间复杂度:O(n)。n 为字符串s的长度
空间复杂度:O(1)。
2. 设计一个支持增量操作的栈
- 用一个数组模拟栈的操作
class CustomStack {
int top, size;
int *stk;
public:
CustomStack(int maxSize) {
stk = new int[maxSize + 1];
size = maxSize;
top = 0;
}
void push(int x) {
if(top < size){
stk[top++] = x;
}
}
int pop() {
if(top == 0){
return -1;
}
return stk[--top];
}
void increment(int k, int val) {
int i;
for(i = 0; i < k && i < top; ++i){
stk[i] += val;
}
}
};
/** * Your CustomStack object will be instantiated and called as such: * CustomStack* obj = new CustomStack(maxSize); * obj->push(x); * int param_2 = obj->pop(); * obj->increment(k,val); */
复杂度分析
时间复杂度:increment操作,O(k)。其他均为O(1)。
空间复杂度:O(n)。n 为 maxSize,栈中的元素量.
边栏推荐
猜你喜欢
随机推荐
2022/7/2 Jenkins详细教程
DGIOT IoT Open Source Platform - Tianyi Cloud Deployment
ZYNQ基础知识
「SwiftUI」DateFormatter使用和时间倒计时
基于rt-thread studio的STM32裸机开发——LED
SPI协议
2022/5/8 SSM框架整合增删改查(模糊查询+分页)(详细案例)
学习资料推荐,截至20220228
云服务器配置jupyter
2022/4/21 Inventory of the pits encountered by Thymeleaf
转速信号变送模块 频率转电压电流信号变换器
mysql5.6数据迁移到mysql5.7版本遇到的时间字段问题(最详细)
DGIOT物联网开源平台——腾讯云轻量应用服务器部署
微信小程序获取用户头像和昵称
谭浩强第五版第三章课后习题
开关量8入4出,高速以太网通讯Socket自由协议远程IO模块 YJ94
UART串口协议
谭浩强第五版c语言第四章课后习题
四路电机驱动
加一问题









