括号序列的“深度”在物理上等同于匹配过程中栈的瞬时最大高度。
- 遇到左括号
'(':意味着进入下一层嵌套,当前深度加 1。 - 遇到右括号
')':意味着当前层嵌套结束,返回上一层,当前深度减 1。 - 最终答案:在整个遍历过程中,当前深度变量所达到过的最大值。
这种方法将递归定义的树状结构扁平化为线性时间轴上的波动曲线,通过维护一个简单的标量(Scalar)状态即可求解,完全避免了递归带来的栈空间消耗。
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
cin >> s;
int sum = 0;
int ans = 0;
for (const char c : s) {
if (c == '(')
sum++;
else if (c == ')')
sum--;
ans = max(ans, abs(sum));
}
cout << ans << endl;
}

京公网安备 11010502036488号