栈、队列、数组
earlene_wyl
这个作者很懒,什么都没留下…
展开
-
leetcode 347. 前 K 个高频元素 medium
leetcode347. 前 K 个高频元素 medium 题目描述:给定一个非空的整数数组,返回其中出现频率前k高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的k总是合理的,且 1 ≤ k ≤ ...原创 2019-08-18 13:39:39 · 119 阅读 · 0 评论 -
刷题(10)-单调栈和单调队列
单调栈用途:O(n)时间,求一个数组的每个元素i,它的左边最近和右边最近比它小or大的元素。求左右两边最近比它大的,维护一个严格单调递减的栈(栈底到栈顶,是从大到小),while的时候栈顶元素小于等于当前元素,我们pop 求左右两边最近比它小的,维护一个严格单调递增的栈(栈底到栈顶,是从小到大),while的时候栈顶元素大于等于当前元素,我们pop每次都要从左到右遍历一遍,然后再从右...原创 2019-09-07 23:29:14 · 176 阅读 · 0 评论 -
leetcode 503. 下一个更大元素 II medium
leetcode503. 下一个更大元素 II medium 题目描述:解题思路:方法一:循环数组 :我们可以把这个循环数组「拉直」,即复制该序列的前n-1n−1个元素拼接在原序列的后面。 这样循环数组就变成了普通数组, 所以我们就可以用单调栈, 求右边第一个比它大的。方法二:还是用单调栈,但是这次不用从右向左那个模板,而是从左向右求右边第一个比它大的。代码:// 方法一class Solution {public: ...原创 2021-12-13 21:07:05 · 184 阅读 · 0 评论 -
leetcode 739. 每日温度 medium
leetcode 739. 每日温度 medium 题目描述:解题思路:单调栈, 求右边最近比它大的。所以从右向左遍历,并且栈顶的元素得是大于当前元素,才能入栈,否则栈顶出栈。代码:class Solution {public: vector<int> dailyTemperatures(vector<int>& temperatures) { if (temperatures....原创 2021-12-13 20:18:44 · 186 阅读 · 0 评论 -
leetcode 946. 验证栈序列 medium
leetcode 946. 验证栈序列 medium 题目描述:解题思路:建立一个辅助栈,按压栈顺序压栈,按出栈顺序出栈具体办法:遍历入栈顺序: 假如当前栈顶和当前被比较的出栈数字一样,那就出栈,直到不一样为止。否则继续入栈。代码:class Solution {public: bool validateStackSequences(vector<int>& pushed, vector<int>&a...原创 2021-12-13 16:27:34 · 189 阅读 · 0 评论 -
leetcode 225. 用队列实现栈 easy
leetcode225. 用队列实现栈 easy题目描述:解题思路:可以用一个队列实现, push的时候,把之前的元素都pop,push回去代码:class MyStack {public: MyStack() { } void push(int x) { int len = que.size(); que.push(x); for (int i = 0; i < len...原创 2021-12-13 15:42:44 · 568 阅读 · 0 评论 -
中缀转后缀表达式(leetcode 150 && 224 && 227 && 772)
目录0)总结记忆1)定义2)后缀表达式求值3)中缀转后缀4)代码 1) (后缀计算)leetcode150. 逆波兰表达式求值2)中缀转后缀3)leetcode224. 基本计算器&&227. 基本计算器 II &&772. 基本计算器 III0)总结记忆1.后缀计算:一个栈,遍历字符...原创 2019-09-25 02:45:55 · 2187 阅读 · 0 评论 -
leetcode 155. 最小栈 easy
leetcode155. 最小栈 easy 题目描述:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。pop()-- 删除栈顶的元素。top()-- 获取栈顶元素。getMin() -- 检索栈中的最小元素。解题思路:做烂了代码://class MinStack ...原创 2019-08-20 01:35:27 · 134 阅读 · 0 评论 -
leetcode 20. 有效的括号 easy
leetcode20. 有效的括号 easy 题目描述:给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true解题思路:没什么好说的,用栈就好代码:class Solution {public: bool isValid(string...原创 2019-08-14 21:01:56 · 125 阅读 · 0 评论 -
leetcode 76. 最小覆盖子串 hard
leetcode76. 最小覆盖子串 hard 题目描述:给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。...原创 2019-08-19 23:26:32 · 131 阅读 · 0 评论 -
刷题(2)-栈,队列(1)总结
栈,队列基础0.1 栈0.2 队列基础0.1 栈栈的特点栈(Stack)是一种线性存储结构,它具有如下特点:栈中的数据元素遵守”先进后出"(First In Last Out)的原则,简称FILO结构。限定只能在栈顶进行插入和删除操作。即同一端插入删除底层实现一般以数组或链表(单向链表、双向链表或循环链表)实现。tips:数组栈,栈顶为数组尾,链表栈采用头插法(插入在链表头...原创 2019-09-05 18:50:55 · 1936 阅读 · 0 评论 -
刷题(2)栈,队列(2)-题目
目录1.用两个栈实现队列(剑指offer 9 )2.包含min函数的栈(剑指offer 30 )3.栈的压入弹出顺序(剑指offer 31)(重要)4.滑动窗口的最大值(剑指offer 59 ) (重要)1.用两个栈实现队列(剑指offer 9 )题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类...原创 2019-09-05 20:18:17 · 623 阅读 · 0 评论 -
剑指offer. 61 扑克牌顺子
剑指offer. 61扑克牌顺子题目描述:5张牌,把A看作1,J为11,Q为12,K为13。大小王可以看作任何数(在vector里面是0),如果能组成顺子,返回true,否则返回false解题思路:顺子必须满足两个条件1. 除0外没有重复的数2. 不算0 的最大数-最小数< 5代码:class Solution {public: bool...原创 2019-08-04 20:04:59 · 141 阅读 · 0 评论 -
小和问题and逆序对
小和问题and逆序对题目描述:1. 小和问题:遍历数组,位于元素左边,且比该元素小的元素总和比如数组 [2 1 5] 对于2来说,左边没有比它小的,对于1来说也没有,对于5来说,有2和1比它小,所以总和32.逆序对:所谓逆序对就是[4,2],[4,1],[5,1]....., 那么就是左边比右边大,即右边比左边小的元素对对数。跟小和思路一样,但是是相反的 一个求...原创 2019-08-04 13:01:49 · 250 阅读 · 0 评论