【Leetcode Daily】682棒球比赛
发表于|更新于|力扣日常 | LeetcodeDaily
|总字数:209|阅读时长:1分钟|浏览量:
题目浅析
想查看原题可以点击题目链接。
简单地说,就是给一个列表,这个列表有数字或者特殊符号,要求按顺序遍历列表计数,遇到特殊符号则按规则运算(取前两数之和,取上一数两倍,去掉上一数),求最终数值和。
思路分享
- 就是简单的模拟一个栈,遇到数字直接 append 进去,遇到符号就取数运算把结果 append 进去,或者把最后一个数字 pop 出来。
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution: |
文章作者: 陆爻齐-LuYaoQi
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!
相关推荐

2025-08-13
【Leetcode Daily】1003检查替换后的词是否有效
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个字符串,该字符串是从一个空字符串开始,不断插入“abc”形成的,这个插入是从字符串的任意处都可以行动。 思路分享 这个题目和实际的题意完全不是一个意思,坏。不过这个不重要。 发现做栈,只要把握一点,就是何时弹栈。例如本题,只要意识到,弹栈的时候,正在遍历的字母是 c,栈顶有 a 和 b,就轻松地写出了条件。 这个条件应该不是最快的,因为只要中间的 abc 有一处无法正确匹配,就可以算是检测不过关,所以更快的思路应该是按照正在遍历的 abc 三种情况,分别检测栈是否符合“正常”。 https://leetcode.cn/problems/check-if-word-is-valid-after-substitutions/solutions/2253773/zhan-jian-ji-xie-fa-pythonjavacgo-by-end-i9o7/ 本题不断插入 abc,并要求检测是否都是...

2025-08-19
【Leetcode Daily】1021删除最外层的括号
题目浅析 想查看原题可以点击题目链接。 简单地说,就是按照题目规定的“原语”来分解有效的括号字符串,要求去掉最外面的一层括号。 思路分享 通过栈记录可以判定当前的括号是否为最外层。具体方法是记录符号时,如果栈内有括号,说明不是最外层,就记录到结果中,否则就只压栈。 https://leetcode.cn/problems/remove-outermost-parentheses/solutions/1520365/shan-chu-zui-wai-ceng-de-gua-hao-by-leet-sux0/ 代码解答(强烈建议自行解答后再看) 参考题解 123456789101112131415class Solution: def removeOuterParentheses(self, s: str) -> str: res, stack = "", [] for c in s: print(res) print(stack) ...

2025-08-24
【Leetcode Daily】1006笨阶乘
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给你一个数字 n,求其笨阶乘。所谓的笨阶乘,就是把原本的从 n 乘到 1 改成按照 * / + - 顺序执行符号的运算式。 思路分享 对于运算表达式就要想到通过栈可以处理,由于运算符有优先级,所以遇到一个数就马上计算是不可行的。 乘除立即算,加减先入栈。这样子下来,栈内最后只剩下待加值,求和即可。 https://leetcode.cn/problems/clumsy-factorial/solutions/693117/fu-xue-ming-zhu-yu-dao-cheng-chu-li-ji-s-furg/ 为什么乘除立即算呢?因为乘除是高优先级运算,即使把乘除入栈了,后续计算时也要优先拿出来算完再与其它数算,倒不如入栈前就先算了。 代码解答(强烈建议自行解答后再看) 参考题解 12345678910111213141516class Solution: def clumsy(self, n: int) -> int: nums = [n] opr...

2025-08-10
【Leetcode Daily】1047删除字符串中的所有相邻重复项
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个字符串,现在要求删除其中所有相邻是重复的字符,如果删除后会产生新的相邻重复字符,则继续删除。求最终处理后的字符串。 思路分享 只要知道了 Python 的列表可以方便的加元素(append),弹出末尾元素(pop),以及可以很方便地组合列表元素(join),本题就能轻松解决。 以及 python 中有种有意思的设计,就是对于各种类型,有内置的 __bool__ 函数,可以当作判断该变量内部是否有内容的方法。比如下面的if stk and stk[-1] == c,第一个条件就是判断列表是否为空,如果为空就是 false,否则有内容的情况下再看最后一个元素。 代码解答(强烈建议自行解答后再看) 参考题解 12345678910class Solution: def removeDuplicates(self, s: str) -> str: stk = list() for c in s: if stk and stk[-1] == c: ...

2025-08-21
【Leetcode Daily】1190反转每对括号间的子串
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个字符串,对于其中所有括号包裹的部分做反转操作,同时去掉括号,求最终处理后的字符串 思路分享 两个思路,第一个就是参考题解中,模拟栈的思路,遇到括号右侧就将括号内容提取到另一个栈上,这个过程顺便就把反转做了,再把临时栈加到普通栈后,反复即可。 第二个思路是预处理,先用一个数组,给出括号对之间的坐标对应,然后第二次就能用 O(n) 复杂度遍历完。 https://leetcode.cn/problems/reverse-substrings-between-each-pair-of-parentheses/solutions/795515/fan-zhuan-mei-dui-gua-hao-jian-de-zi-chu-gwpv/ 代码解答(强烈建议自行解答后再看) 参考题解 123456789101112131415class Solution: def reverseParentheses(self, s: str) -> str: stk = list() ...

2025-08-15
【Leetcode Daily】1209删除字符串中的所有相邻重复项II
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个字符串和一个整数 k,要求把其中所有相邻的连续的,长度超过k的项删除,返回最后的字符串。 思路分享 除了暴力的检测到相邻字符,删除后从头到尾再检测一边这种。其实可以通过记录每个字符的重复计数来加速过程。 比如本题用栈记录遍历过的字符,以及对应的重复计数(一个字符与上一个字符相同时则加一),在这个计数大于 k 时,把这个字符弹栈 k 次。 代码解答(强烈建议自行解答后再看) 参考题解 12345678910111213141516171819class Solution: def removeDuplicates(self, s: str, k: int) -> str: stk = list() rec = list() for i, c in enumerate(s): if stk and c == stk[-1]: rec.append(rec[-1]+1) else: ...
公告
希望你我都能得偿所愿
PS:相对流水账的文章只能在归档找得到
系列文章
