1111. 有效括号的嵌套深度

89 阅读1分钟

题目:
leetcode.cn/problems/ma…
算法:
方法一:贪心
编排的顺序和seq中括号顺序没有任何关系了。要让max(depthA,depthB)尽可能小,则在分配A,B两个有效括号对时,尽可能让A,B的深度比较接近。 而深度增加是和左括号有关,深度减少和右括号有关,遍历到左括号时,先放到深度低的括号对里去,遍历到右括号时,先放到深度高的括号里去

func maxDepthAfterSplit(seq string) []int {
    depthA, depthB := 0, 0
    ans := []int{}
    for i := range seq {
        if seq[i] == '(' {
            if depthA <= depthB {
                depthA ++
                ans = append(ans, 0)
            } else {
                depthB ++
                ans = append(ans, 1)
            }
        } else {
            if depthA >= depthB {
                depthA --
                ans = append(ans, 0)
            } else {
                depthB --
                ans = append(ans, 1)
            }
        }
    }
    return ans
}