![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
栈/队列/单调队列/单调栈
栈/队列/单调队列/单调栈
蒋卫升
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #669 (Div. 2) D (单调队列转移dp)
题意:给你n根柱子,你在第一根柱子上,要跳到第n根柱子,问你最少要跳几下。能从一根柱子跳到另外一根柱子的条件是:这两根柱子严格比他们中间的所有柱子高这两根柱子严格比他们中间的所有柱子低前一根柱子跳到后一根柱子满足其中一个就可以了。题解:首先dp【i】代表的是从第一根柱子跳到第iii根柱子上,最少要跳几下。我们中后往前看,那么第三个条件的方程是:dp[i]=dp[i−1]+1dp[i] = dp[i-1]+1dp[i]=dp[i−1]+1;第2个条件,我们可以用单调栈维护一个递减原创 2020-09-13 13:58:19 · 251 阅读 · 0 评论 -
leetcode 921使括号有效的最小添加方式
link题意:给你一个只包含"(" 和 ")"两种字符的字符串,问添加多少个字符才能使得这个字符串合法,合法就是每对括号都匹配成功题解:直接匹配,如果匹配成功就继续,如果失败就添加字符串/** * @param {string} S * @return {number} */var minAddToMakeValid = function(s) { let cnt = 0 let ans = 0 for(let i = 0; i < s.length; i++)原创 2020-11-08 16:48:48 · 181 阅读 · 0 评论 -
leetcode 946验证栈序列
link题意:验证一个序列是不是另外一个序列的入栈顺序题解:用双指针分别指向这两个序列的起始位置,把pushed序列加入到栈中,如果此时栈顶元素跟出栈序列中的值相同,就pop出去,移动指针,如果最后有一个序列已经遍历完成,而栈不为空,就说明它不是poped序列的出栈序列/** * @param {number[]} pushed * @param {number[]} popped * @return {boolean} */var validateStackSequences = func原创 2020-11-08 10:51:50 · 215 阅读 · 0 评论 -
leetcode 20 有效括号对 (栈)
link题意:匹配括号题解:栈/** * @param {string} s * @return {boolean} */var isValid = function(s) { let stack = []; for(let i = 0; i < s.length; i++) { if (s[i] == '(' || s[i] == '[' || s[i] == '{'){ stack.push(s[i]); } e原创 2020-11-08 10:25:08 · 146 阅读 · 0 评论