leetcode32 最长游戏括号 dp
有一说一,我觉得这题没有到困难级
要保存之前的状态,感觉是很明显的dp
思路和题解一样

class Solution {
public:
    int longestValidParentheses(string s) {
        int len=s.length();
        int ret = 0;
        int *dp=new int[len];
        for(int i=0;i<len;i++)
            dp[i]=0;
        for (int i = 1; i < s.length(); i++) {
            if (s[i] == ')') {
                if (s[i - 1] == '(') {
                    dp[i] = (i >= 2 ? dp[i - 2] : 0) + 2;
                }
                else if (i - dp[i - 1] > 0 && s[i - dp[i - 1] - 1] == '(') {
                    dp[i] = dp[i - 1] + ((i - dp[i - 1]-2) >= 0 ? dp[i - dp[i - 1] - 2] : 0) + 2;
                }
                ret=max(ret,dp[i]);
            }
        }
        return ret;
    }
};
然后看了题解,因为只有( H和),只需要用left,right记录即可
扫描两遍的原因是 (() 避免这种情况
class Solution {
public:
    int longestValidParentheses(string s) {
        int res = 0;
        int left = 0;
        int mark = 0;
        for (int i = 0; i < s.size(); ++i) {
            int prev_mark = mark;
            mark = max(0, mark + ((s[i] == '(') ? 1 : -1));
            if (mark == 0) {
                if (prev_mark > 0) {
                    res = max(i - left + 1, res);
                } else {
                    left = i + 1;
                }
            }
        }
        mark = 0;
        int right = s.size() - 1;
        for (int i = s.size() - 1; i >= 0; --i) {
            int prev_mark = mark;
            mark = max(0, mark + ((s[i] == ')') ? 1 : -1));
            if (mark == 0) {
                if (prev_mark > 0) {
                    res = max(right - i + 1, res);
                } else {
                    right = i - 1;
                }
            }
        }
        return res;
    }
};
leetcode32 最长游戏括号 dp的更多相关文章
- [Swift]LeetCode32. 最长有效括号 | Longest Valid Parentheses
		Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ... 
- Leetcode32. 最长有效括号
		32. 最长有效括号 做法 \(f_{i}\)以\(i\)结尾的最长匹配 前提为\(s[i]=')'\) \(s[i-1]='('\),则\(f[i]=f[i-2]+2\) \(s[i-1]=')'\ ... 
- (CodeForces - 5C)Longest Regular Bracket Sequence(dp+栈)(最长连续括号模板)
		(CodeForces - 5C)Longest Regular Bracket Sequence time limit per test:2 seconds memory limit per tes ... 
- 九度OJ 1342:寻找最长合法括号序列II (DP)
		时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:898 解决:366 题目描述: 假如给你一个由'('和')'组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给 ... 
- 九度OJ 1337:寻找最长合法括号序列 (DP)
		时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:839 解决:179 题目描述: 给你一个长度为N的,由'('和')'组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的 ... 
- [LeetCode] Longest Valid Parentheses 最长有效括号
		Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ... 
- leetcode 最长有效括号
		给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度. 示例 1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()&quo ... 
- [LeetCode] 32. Longest Valid Parentheses 最长有效括号
		Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ... 
- 【LeetCode 32】最长有效括号
		题目链接 [题解] 设dp[i]表示以第i个字符结尾的最长有效括号的长度. 显然只要考虑s[i]==')'的情况 则如果s[i-1]=='(',则dp[i] = dp[i-2]+2; 如果s[i-1] ... 
随机推荐
- C#实现一个弹窗监控小程序
			一..实现弹窗淡入淡出等效果即弹窗自动关闭 技术要点: 1.弹窗效果(淡入淡出,自下而上滑入)使用WIN API实现 2.弹出的窗体在一定时间后,自动关闭使用一个timer实现,弹窗开始是,打开tim ... 
- Sgu149 Computer Network
			Sgu149 Computer Network 题目描述 给你一棵N(N<=10000)个节点的树,求每个点到其他点的最大距离. 不难想到一个节点到其他点的最大距离为:max(以它为根的子树的最 ... 
- C语言中二维数组声明时,探究省略第一维的原因
			我们在使用二维数组作为参数时,我们既可以指明这个数组各个维度的维数,同时我们也可以省略一维,但是二维却不能省略.why呢?由于编译器原理的限制,在一个数组Elemtype test[m][n]中,访问 ... 
- 分布式跟踪的一个流行标准是OpenTracing API,该标准的一个流行实现是Jaeger项目。
			https://github.com/jaegertracing/jaeger https://mp.weixin.qq.com/s/-Tn2AgyHoq8pwMun8JHcGQ Jaeger的深入分 ... 
- libevent之基于socket的bufferevent
			基于socket的bufferevent由一个socket的传输层和read/write buffer组成.区别于常规的event,当socket可读或者可写时会回调用户的callback,buffe ... 
- 在Centos7上安装Python+Selenium+Firefox+Geckodriver
			1.事先准备好Centos7的系统 Centos系统是CentOS Linux release 7.4.1708 (Core) 查看Centos内核版本命令cat /etc/centos-releas ... 
- tricks - 实现
			笔记总页面 目录 负下标 动态开点 花括号 负下标 有的时候我们需要存一些负的东西,比如我就只要一个 \(-1\),或者说值域是 \([-10^6,10^6]\),而我懒得写平移 (写平移不仅麻烦,而 ... 
- SpringMVC听课笔记(四:映射请求参数 & 请求头)
			1.请求参数 @RequestParam 来映射请求参数 http://localhost:8080/springmvc-1/springmvc/testRequestParam?username ... 
- 前台console调试技巧
			前台console调试技巧 一.console.log() 二.console.warn() 三.console.dir() 四.console.table() 五.console.assert() ... 
- ESRI,空间数据处理,WKT,GeoJson
			ESRI,空间数据处理,WKT,GeoJson 一.WKT 二.GeoJson 三.WKT转GeoJson 四.GeoJson 转 WKT 一.WKT WKT(well-known text)是一种文 ... 
