最长有效括号

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;

}

};

相关推荐
Chen—LSN1 小时前
数据结构——拿捏复杂度
java·c语言·开发语言·数据结构·经验分享·笔记·算法
Chen_harmony1 小时前
六、排序详解
c语言·数据结构·算法·排序算法
-dzk-1 小时前
【贪心算法】LC 55.跳跃游戏
算法·游戏·贪心算法
ofoxcoding2 小时前
Jev 模型评测深度解析:核心得分、能力局限与最佳适用任务场景
人工智能·算法·机器学习·ai
Evand J2 小时前
【MATLAB例程】三维A*路径规划与TOA-AOA-TDOA融合定位算法。附下载链接
数据库·算法·matlab
Doubbbbbbble云2 小时前
图算法中的剪枝技术与启发式优化分析4
算法·机器学习·剪枝
鶴哥只手遮天2 小时前
CFL3D深度解析:NASA经典CFD求解器的架构、算法与工程实践
算法
维克兜率天2 小时前
【维克】价差交易实战:配对交易的核心参数设置
大数据·笔记·算法·量化
dtq04242 小时前
数据结构 - 树的概念
c语言·数据结构·学习·算法
晒太羊的猫2 小时前
hot100多维动态规划刷题
算法·动态规划