栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
    • 前言
    • 一、练习题目
    • 二、思路和代码
      •           1. 括号的最大嵌套深度
      •           2. 设计一个支持增量操作的栈

前言

        每日氵题(7月14日)

一、练习题目

    题目一:LeetCode |1614. 括号的最大嵌套深度
    题目二:LeetCode |1381. 设计一个支持增量操作的栈

二、思路和代码
  • 1614.  
          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;
        }
    }
};

复杂度分析
时间复杂度:increment操作,O(k)。其他均为O(1)。
空间复杂度:O(n)。n 为 maxSize,栈中的元素量.

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016422.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号