1. 0155. 最小栈
要求:设计一个「栈」。实现 push
,pop
,top
,getMin
操作,其中 getMin
要求能在常数时间内实现。
说明:
-
$-2^{31} \le val \le 2^{31} - 1$ 。 -
pop
、top
和getMin
操作总是在非空栈上调用 -
push
,pop
,top
和getMin
最多被调用$3 * 10^4$ 次。
示例:
输入:
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]
输出:
[null,null,null,null,-3,null,0,-2]
解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.
2. 0020. 有效的括号
描述:给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
。
要求:判断字符串 s
是否有效(即括号是否匹配)。
说明:
- 有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例:
输入:s = "()"
输出:True
输入:s = "()[]{}"
输出:True
描述:给定一个字符串表达式 s
,表达式中所有整数为非负整数,运算符只有 +
、-
、*
、/
,没有括号。
要求:实现一个基本计算器来计算并返回它的值。
说明:
-
$1 \le s.length \le 3 * 10^5$ 。 -
s
由整数和算符(+
、-
、*
、/
)组成,中间由一些空格隔开。 -
s
表示一个有效表达式。 - 表达式中的所有整数都是非负整数,且在范围
$[0, 2^{31} - 1]$ 内。 - 题目数据保证答案是一个 32-bit 整数。
示例:
输入:s = "3+2*2"
输出:7
输入:s = " 3/2 "
输出:1
- 「0155. 最小栈」习题解析:网页链接、Github 链接
- 「0020. 有效的括号」习题解析:网页链接、Github 链接
- 「0227. 基本计算器 II」习题解析:网页链接、Github 链接