栈
文章平均质量分 50
我很忙2010
咩
展开
-
leetcode 统计道路上的碰撞次数
在一条无限长的公路上有n辆汽车正在行驶。汽车按从左到右的顺序按从0到n - 1编号,每辆车都在一个独特的位置。给你一个下标从0开始的字符串directions,长度为n。directions[i]可以是'L'、'R'或'S'分别表示第i辆车是向左、向右或者停留在当前位置。每辆车移动时速度相同。碰撞次数可以按下述方式计算:当两辆移动方向相反的车相撞时,碰撞次数加2。 当一辆移动的车和一辆静止的车相撞时,碰撞次数加1。碰撞发生...原创 2022-03-20 15:33:45 · 271 阅读 · 0 评论 -
leetcode 5357. 设计一个支持增量操作的栈(C++)
请你设计一个支持下述操作的栈。实现自定义栈类CustomStack:CustomStack(int maxSize):用maxSize初始化对象,maxSize是栈中最多能容纳的元素数量,栈在增长到maxSize之后则不支持push操作。 void push(int x):如果栈还未增长到maxSize,就将x添加到栈顶。 int pop():返回栈顶的值,或...原创 2020-03-15 15:36:46 · 209 阅读 · 0 评论 -
牛客网——用两个栈实现队列(C++)
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。C++class Solution{public: void push(int node) { stack1.push(node); } int pop() { while(!stack1.empty()) ...原创 2020-03-14 23:37:58 · 158 阅读 · 0 评论 -
leetcode 225. 用队列实现栈(C++)
使用队列实现栈的下列操作:push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back,peek/pop from front,size, 和is empty这些操作是合法的。 你所使用的语言也许不支持队列。你可以使用 lis...原创 2020-03-14 23:24:08 · 242 阅读 · 0 评论 -
牛客网——栈的压入、弹出序列(C++)
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)C++class Solution {public: bool IsPopOr...原创 2020-01-16 13:06:29 · 186 阅读 · 0 评论 -
LeetCode 503. 下一个更大元素 II(C++)
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例 1:输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数; 第二...原创 2018-12-20 19:42:32 · 356 阅读 · 0 评论 -
LeetCode 678. 有效的括号字符串(C、C++、python)
给定一个只包含三种字符的字符串:(,)和*,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:任何左括号(必须有相应的右括号)。 任何右括号)必须有相应的左括号(。 左括号(必须在对应的右括号之前)。 *可以被视为单个右括号),或单个左括号(,或一个空字符串。 一个空字符串也被视为有效字符串。示例 1:输入: "()"输出...原创 2018-11-11 16:09:48 · 620 阅读 · 0 评论 -
LeetCode 739. 每日温度(C、C++、python)
根据每日气温列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请输入0来代替。例如,给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。提示:气温列表长度的范围是[1, 30000]。每个气温的值的都是[3...原创 2018-11-09 18:29:45 · 1662 阅读 · 3 评论 -
leetcode 1249. 移除无效的括号(C++)
给你一个由 '('、')' 和小写字母组成的字符串 s。你需要从字符串中删除最少数目的 '(' 或者 ')'(可以删除任意位置的括号),使得剩下的「括号字符串」有效。请返回任意一个合法字符串。有效「括号字符串」应当符合以下任意一条要求:空字符串或只包含小写字母的字符串 可以被写作AB(A连接B)的字符串,其中A和B都是有效「括号字符串」 可以被写作(A)...原创 2019-11-03 17:15:02 · 830 阅读 · 0 评论 -
leetcode 1215. 步进数(C++)
如果一个整数上的每一位数字与其相邻位上的数字的绝对差都是1,那么这个数就是一个「步进数」。例如,321是一个步进数,而421不是。给你两个整数,low和high,请你找出在[low, high]范围内的所有步进数,并返回排序后的结果。示例:输入:low = 0, high = 21输出:[0,1,2,3,4,5,6,7,8,9,10,12,21]...原创 2019-10-06 00:46:45 · 367 阅读 · 0 评论 -
leetcode 1209. 删除字符串中的所有相邻重复项 II(C++)
给你一个字符串s,「k倍重复项删除操作」将会从s中选择k个相邻且相等的字母,并删除它们,使被删去的字符串的左侧和右侧连在一起。你需要对s重复进行无限次这样的删除操作,直到无法继续为止。在执行完所有删除操作后,返回最终得到的字符串。本题答案保证唯一。示例 1:输入:s = "abcd", k = 2输出:"abcd"解释:没有要删除的内容。示例 2...原创 2019-09-29 12:58:05 · 634 阅读 · 0 评论 -
leetcode 1190. 反转每对括号间的子串(C++、python)
给出一个字符串s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中不应包含任何括号。示例 1:输入:s = "(abcd)"输出:"dcba"示例 2:输入:s = "(u(love)i)"输出:"iloveu"示例 3:输入:s = "(ed(et(oc))el)"...原创 2019-09-15 15:42:43 · 1480 阅读 · 0 评论 -
leetcode 735. 行星碰撞(C++、python)
给定一个整数数组asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。示例 1:输入: asteroi...原创 2019-07-23 19:16:46 · 498 阅读 · 0 评论 -
leetcode 394. 字符串解码(C++、python)
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为:k[encoded_string],表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数k,例如不会出现像3a或2[4...原创 2019-05-20 19:27:31 · 460 阅读 · 0 评论 -
leetcode 1021. 删除最外层的括号(C++、python)
有效括号字符串为空("")、"(" + A + ")"或A + B,其中A和B都是有效的括号字符串,+代表字符串的连接。例如,"","()","(())()"和"(()(()))"都是有效的括号字符串。如果有效字符串S非空,且不存在将其拆分为S = A+B的方法,我们称其为原语(primitive),其中A和B都是非空有效括号字符串。给出一个非空有效字...原创 2019-04-19 19:21:54 · 459 阅读 · 0 评论 -
LeetCode 1003. 检查替换后的词是否有效(C++、python)
给定有效字符串"abc"。对于任何有效的字符串V,我们可以将V分成两个部分X和Y,使得X + Y(X与Y连接)等于V。(X或Y可以为空。)那么,X + "abc" + Y也同样是有效的。例如,如果S = "abc",则有效字符串的示例是:"abc","aabcbc","abcabc","abcabcababcc"。无效字符串的示例是:"abccba","a...原创 2019-05-02 14:32:57 · 207 阅读 · 0 评论 -
LeetCode 1019. 链表中的下一个更大节点(C++、python)
给出一个以头节点head作为第一个节点的链表。链表中的节点分别编号为:node_1, node_2, node_3, ...。每个节点都可能有下一个更大值(next largervalue):对于node_i,如果其next_larger(node_i)是node_j.val,那么就有j > i且node_j.val > node_i.val,而j是可能...原创 2019-04-07 16:40:54 · 1422 阅读 · 1 评论