【题解报告】--- 1614. 括号的最大嵌套深度 1381. 设计一个支持增量操作的栈

本文解析了两道LeetCode题目:1614号问题关于计算括号的最大嵌套深度,1381号问题涉及设计支持增量操作的栈。通过代码实例展示了如何遍历字符串判断括号嵌套并求解,以及如何使用数组实现定制栈的增量功能。
摘要由CSDN通过智能技术生成

前言

        每日氵题(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)。


  1. 设计一个支持增量操作的栈 https://leetcode.cn/problems/design-a-stack-with-increment-operation/

          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,栈中的元素量.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值