栈
Sun_Sky_Sea
站在巨人的肩膀上
展开
-
224. 基本计算器
栈原创 2022-06-05 16:06:00 · 425 阅读 · 0 评论 -
227. 基本计算器 II
栈原创 2022-06-04 19:35:13 · 86 阅读 · 0 评论 -
155. 最小栈
栈原创 2022-06-04 17:23:54 · 1829 阅读 · 0 评论 -
321. 拼接最大数
321. 拼接最大数原始题目链接:https://leetcode.cn/problems/create-maximum-number/给定长度分别为 m 和 n 的两个数组,其元素由 0-9 构成,表示两个自然数各位上的数字。现在从这两个数组中选出 k (k <= m + n) 个数字拼接成一个新的数,要求从同一个数组中取出的数字保持其在原数组中的相对顺序。求满足该条件的最大数。结果返回一个表示该最大数的长度为 k 的数组。说明: 请尽可能地优化你算法的时间和空间复杂度。示例 1:输入:原创 2022-05-29 16:24:28 · 132 阅读 · 0 评论 -
1081. 不同字符的最小子序列
1081. 不同字符的最小子序列原始题目链接:https://leetcode.cn/problems/smallest-subsequence-of-distinct-characters/返回 s 字典序最小的子序列,该子序列包含 s 的所有不同字符,且只包含一次。注意:该题与 316 https://leetcode.com/problems/remove-duplicate-letters/ 相同示例 1:输入:s = “bcabc”输出:“abc”示例 2:输入:s = “cbac原创 2022-05-29 15:26:38 · 77 阅读 · 0 评论 -
85. 最大矩形
85. 最大矩形原始题目链接:https://leetcode.cn/problems/maximal-rectangle/给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。解题思路:这道题对于每行求解以改行为底,连续是1的高度,就可以退化为第84题,计算都是1的矩形的面积。代码实现:class Solution: def max_area(self, heights): # heights原创 2022-05-29 14:01:20 · 80 阅读 · 0 评论 -
503. 下一个更大元素 II
503. 下一个更大元素 II原始题目链接:https://leetcode.cn/problems/next-greater-element-ii/给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1 。示例 1:输入: nums = [1原创 2022-05-28 18:57:51 · 93 阅读 · 0 评论 -
496. 下一个更大元素 I
496. 下一个更大元素 I原始题目链接:https://leetcode.cn/problems/next-greater-element-i/nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j原创 2022-05-28 18:20:41 · 52 阅读 · 0 评论 -
84. 柱状图中最大的矩形
84. 柱状图中最大的矩形原始题目链接:https://leetcode.cn/problems/largest-rectangle-in-histogram/给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。解题思路:使用单调栈解决两头大中间小或者两头小中间大的问题。例如以b点为高的矩形的最大宽度为, 从a到c,其中a,c分别为b左边和右边第一个小于b的元素,即找到b的边界a和c,矩形的面积就是(c - a原创 2022-05-28 17:21:03 · 103 阅读 · 0 评论 -
659. 分割数组为连续子序列
659. 分割数组为连续子序列原始题目链接:https://leetcode.cn/problems/split-array-into-consecutive-subsequences/给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个长度至少为 3 的子序列,其中每个子序列都由连续整数组成。如果可以完成上述分割,则返回 true ;否则,返回 false 。示例 1:输入: [1,2,3,3,4,5]输出: True解释:你可以分割出这样两个连续子序列 :原创 2022-05-21 16:52:53 · 118 阅读 · 0 评论 -
907. 子数组的最小值之和
907. 子数组的最小值之和原始题目链接:https://leetcode.cn/problems/sum-of-subarray-minimums/给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。由于答案可能很大,因此 返回答案模 10^9 + 7 。示例 1:输入:arr = [3,1,2,4]输出:17解释:子数组为 [3],[1],[2],[4],[3,1],[1,2],[2,4],[3,1,2],[1,2,4],[3,1,2,原创 2022-05-21 14:23:48 · 297 阅读 · 0 评论 -
341. 扁平化嵌套列表迭代器
341. 扁平化嵌套列表迭代器原始题目链接:https://leetcode.cn/problems/flatten-nested-list-iterator/给你一个嵌套的整数列表 nestedList 。每个元素要么是一个整数,要么是一个列表;该列表的元素也可能是整数或者是其他列表。请你实现一个迭代器将其扁平化,使之能够遍历这个列表中的所有整数。实现扁平迭代器类 NestedIterator :NestedIterator(List nestedList) 用嵌套列表 nestedList 初始原创 2022-05-19 22:40:09 · 197 阅读 · 0 评论 -
150. 逆波兰表达式求值
150. 逆波兰表达式求值原始题目链接:https://leetcode.cn/problems/evaluate-reverse-polish-notation/根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。注意 两个整数之间的除法只保留整数部分。可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = [“2”,“1”,“+”,“3”,“*”]原创 2022-05-18 16:24:12 · 168 阅读 · 0 评论 -
946. 验证栈序列
946. 验证栈序列原始题目链接:https://leetcode.cn/problems/validate-stack-sequences/给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1原创 2022-05-15 23:37:51 · 331 阅读 · 0 评论 -
71. 简化路径
简化路径原始题目链接:https://leetcode.cn/problems/simplify-path/给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,‘//’)都被视为单个斜杠 ‘/’ 。 对于此问题,任何其他格式的点(例如,.原创 2022-05-15 11:07:41 · 161 阅读 · 0 评论 -
114. 二叉树展开为链表
164. 最大间距原始题目链接:https://leetcode-cn.com/problems/maximum-gap/给定一个无序的数组 nums,返回 数组在排序之后,相邻元素之间最大的差值 。如果数组元素个数小于 2,则返回 0 。您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。示例 1:输入: nums = [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例 2:输入:原创 2022-03-28 22:54:00 · 204 阅读 · 0 评论 -
394. 字符串解码
1382. 将二叉搜索树变平衡原始题目链接:https://leetcode-cn.com/problems/balance-a-binary-search-tree/给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。如果有多种构造方法,请你返回任意一种。如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二叉搜索树是 平衡的 。解题思路:先把节点保存到一个数组中,使用中序遍历二叉搜索树,这样得到的是一个有序的数组,退化成1原创 2022-05-01 11:29:04 · 1389 阅读 · 0 评论