zoukankan      html  css  js  c++  java
  • 1111. 有效括号的嵌套深度 看题两小时,做题10分钟系列,这是在考语文吧

    有效括号字符串 定义:对于每个左括号,都能找到与之对应的右括号,反之亦然。详情参见题末「有效括号字符串」部分。

    嵌套深度 depth 定义:即有效括号字符串嵌套的层数,depth(A) 表示有效括号字符串 A 的嵌套深度。详情参见题末「嵌套深度」部分。

    有效括号字符串类型与对应的嵌套深度计算方法如下图所示:

    给你一个「有效括号字符串」 seq,请你将其分成两个不相交的有效括号字符串,A 和 B,并使这两个字符串的深度最小。

    不相交:每个 seq[i] 只能分给 A 和 B 二者中的一个,不能既属于 A 也属于 B 。
    A 或 B 中的元素在原字符串中可以不连续。
    A.length + B.length = seq.length
    深度最小:max(depth(A), depth(B)) 的可能取值最小。 
    划分方案用一个长度为 seq.length 的答案数组 answer 表示,编码规则如下:

    answer[i] = 0,seq[i] 分给 A 。
    answer[i] = 1,seq[i] 分给 B 。
    如果存在多个满足要求的答案,只需返回其中任意 一个 即可。

    示例 1:

    输入:seq = "(()())"
    输出:[0,1,1,1,1,0]
    示例 2:

    输入:seq = "()(())()"
    输出:[0,0,0,1,1,0,1,1]
    解释:本示例答案不唯一。
    按此输出 A = "()()", B = "()()", max(depth(A), depth(B)) = 1,它们的深度最小。
    像 [1,1,1,0,0,1,1,1],也是正确结果,其中 A = "()()()", B = "()", max(depth(A), depth(B)) = 1 。

    题解----其实题目都是在说废话

    1、题目给出的seq是个有效的括号,就像写代码的时候‘(’和‘)’是对等的,就是能编译成功的那种括号组合
    2、题目那么长,实际上能表达的意思就是把seq分成2组,A组和B组,并且使他们各自的嵌套数最相近
    3、我们知道每个 ( 对应一层嵌套,那么怎样才能让A B的嵌套层数最相近呢?
    这就像一堆苹果,A B小孩分(不识数的哈),要求最平均的分苹果,那就是给A一个,再给B一个,然后再给A,再给B一个,最后就能出来最平均的分法了
    在这个题目也一个,左往右遍历seq,遇到 (,先给个A,下一个再给B,一直循环下去就能得到嵌套层数最相近的了

    肯定会先遇到 (,假设A的是0(实际看着示例来着),那把vec第一个值设为0
    第二个遇到的还是 (,这个时候需要给B了,那就把vec的第二个值设为1
    第三个遇到的是 ),这个 )肯定的跟B一对的,将vec的第三个值也设为1
    。。。
    。。

    end
    最后就能得到全是0和1的返回值vec。

    class Solution {
    public:
        vector<int> maxDepthAfterSplit(string seq) {
        //肯定会先遇到 (,假设给A的是0,实际看着示例来着
        int d = -1;
        vector<int> ret;
        for (char& c : seq)
            //遇到第一个 ( 
            if (c == '(') {
                ++d;
                ret.push_back(d % 2);
            }
            else {
                ret.push_back(d % 2);
                --d;
            }
            return ans;
        }
    };
    
    作者:gongkiro
    链接:https://leetcode-cn.com/problems/maximum-nesting-depth-of-two-valid-parentheses-strings/solution/kan-ti-liang-xiao-shi-zuo-ti-10fen-zhong-xi-lie-zh/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    HDFS datanode源码分析
    hive udaf开发入门和运行过程详解
    hive原生和复合类型的数据加载和使用
    tomcat部署web应用(转)
    HDFS namenode源码分析
    HDFS dfsclient写文件过程 源码分析
    hive中UDTF编写和使用(转)
    HDFS dfsclient读文件过程 源码分析
    MapReduce源码分析总结(转)
    DataRabbit 轻量的数据访问框架(09) -- IDataSchemaAccesser
  • 原文地址:https://www.cnblogs.com/gongkiro/p/12615932.html
Copyright © 2011-2022 走看看