最长有效括号

dp:

class Solution {

public:

int longestValidParentheses(string s) {

int n = s.size();

vector<int> dp(n + 1, 0);

int maxcnt = 0;

for (int i = 1; i < n; ++i) {

if (si == ')') {

if (si-1 == '(')

dpi = (i >= 2 ? dpi - 2 : 0)+2;

else {

int pos = i - dpi - 1 - 1; //'('

if (pos >= 0 && spos == '(') {

dpi = dpi - 1 + 2 + (pos >= 1 ? dppos - 1 : 0);//加上前面的

}

}

}

maxcnt = max(maxcnt, dpi);

}

return maxcnt;

}

};

lr:

class Solution {

public:

int longestValidParentheses(string s) {

int l = 0, r = 0, n = s.size();

int maxcnt = 0;

for (int i = 0; i < n; ++i) {

if (si == '(')

++l;

else

++r;

if (l == r)

maxcnt = max(maxcnt, l + r);

else if (r > l)

l = 0, r = 0;

}

l = 0, r = 0;

for (int i = n - 1; i > 0; --i) {

if (si == ')')

++l;

else

++r;

if (l == r)

maxcnt = max(maxcnt, l + r);

else if (r > l)

l = 0, r = 0;

}

return maxcnt;

}

};

双指针:

class Solution {

public:

int longestValidParentheses(string s) {

stack<int> st;

int n = s.size();

int maxcnt = 0;

st.push(-1);

for (int i = 0; i < n; ++i) {

if (si == '(') {

st.push(i);

} else {

st.pop();

if (st.empty())

st.push(i);

else

maxcnt = max(maxcnt, i - st.top());

}

}

return maxcnt;

}

};

相关推荐
小郎君6588 分钟前
MPTT 不是万能编号:一棵百万节点树的增删改与批量事务
算法
FPGA小徐16 分钟前
【一生一芯 / PA】AM 核心文件逐行解析(上):从 start.S 到 gpu.c
前端·算法
lvwangshu26 分钟前
P8981 「DROI」Round 1 距离 题解
动态规划·图论·题解·dp·树形dp·技巧·换根dp·性质题·思维好题
Tairitsu_H1 小时前
[动态规划#1] 子数组 | 最大子数组和 | 环形子数组的最大和 | 乘积最大子数组 | 乘积为正数的最长子数组
算法·动态规划
凯瑟琳.奥古斯特2 小时前
动态调优IoU提升OCR文本合并精度
开发语言·python·算法
布莱克6052 小时前
A* 算法详解:从原理到实现
开发语言·c++·算法
段一凡-华北理工大学2 小时前
高炉炼铁机器视觉与智能识别十八讲~系列文章15:可靠性篇:防误报、容错与识别系统的鲁棒性设计
人工智能·算法·机器学习·高炉大模型·高炉机器视觉·高炉炼铁模型开发
某林2123 小时前
局部路径规划器 DWB:速度采样与评分权重的取值分析
人工智能·算法·架构·机器人·技术复盘
AI职业加油站3 小时前
模数共振行动解读|大模型应用工程师证书,匹配行业 RAG/Agent 落地人才需求
人工智能·学习·算法·职场和发展·职场发展
lengxuenong3 小时前
树状数组 · 信息学学习手册2-离散化与逆序对
c++·学习·算法