题目:
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
}