栈与队列
empty__barrel
这个作者很懒,什么都没留下…
展开
-
栈与队列总结
栈先进后出,通过栈可以将栈中元素顺序对调。队列先进先出,队列则不行。题目:力扣:232.用栈实现队列入元素到栈A,栈A元素到栈B中,栈B顺序即队列顺序。力扣:225. 用队列实现栈出元素即出队列尾,将队列A中除最后一个元素全部放入队列B中,这时可取出最后一个。力扣:20. 有效的括号括号前后对应,逐渐加括号,遇到反括号与前一个括号匹配即可,那么是前括号时入反括号,更好与反括号比较。三种情况:前括号多,后括号多,刚刚好,不匹配。力扣:1047. 删除字符串中的所有相邻重复项逐一入栈,遇到原创 2022-02-25 21:57:39 · 354 阅读 · 0 评论 -
力扣:347.前 K 个高频元素
力扣:347.前 K 个高频元素代码随想录解析题目:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。思路:这道题目主要涉及到如下三块内容:1:要统计元素出现频率——使用map来进行统计2:对频率排序——使用一种 容器适配器就是优先级队列,对频率进行排序3:找出前K个高频元素小堆按小值出,所以最后放入vector是从后往前放。代码:class Solution {public:class mycomparison{原创 2022-02-19 13:38:21 · 881 阅读 · 0 评论 -
力扣:239. 滑动窗口最大值
力扣:239. 滑动窗口最大值代码随想录解析题目:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。思路:按题意可知是查找范围内的最大值,所以只需要找到范围内的最大值,然后将最大值前面的值全部删掉,因为窗口不断右移最大值还是此最大值,与那些比此最大值小的值无关,然后将最大值后面的值保留,因为随之窗口的移动(若添加的每一个数都比最大值小)最大值也会被删除后面的值就原创 2022-02-19 10:56:05 · 287 阅读 · 0 评论 -
力扣:150. 逆波兰表达式求值
力扣:150. 逆波兰表达式求值代码随想录题目:根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。注意 两个整数之间的除法只保留整数部分。可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况.思路:用栈,数字则入栈,运算符则取出两个值进行运算,同时将运算结果放入栈中。代码:class Solution {public: int evalRPN(vector<s原创 2022-02-18 21:36:18 · 351 阅读 · 0 评论 -
力扣:1047. 删除字符串中的所有相邻重复项
力扣:1047. 删除字符串中的所有相邻重复项代码随想录题目:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。思路:用栈进行操作。两种情况①:栈为空:添加元素入栈。②:栈不为空:当前字母与栈顶相同则删除,不同当前元素入栈。代码:class Solution {public: string removeDuplicates(str原创 2022-02-18 20:55:56 · 272 阅读 · 0 评论 -
力扣:20. 有效的括号
力扣:20. 有效的括号题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。解析:用栈即可,从字符串起始处的字符开始依次入栈中当出现右括号与前一位对应即可,最后为空即成功。所以当出现左括号时将左括号对应的右括号入栈(这样才好对比)当出现右括号,将出栈元素与当前元素比较。当栈为空时那么不能出栈那么就匹配失败return false,当不匹配时 return fal原创 2022-02-18 20:37:24 · 365 阅读 · 0 评论 -
力扣:225. 用队列实现栈
力扣:225. 用队列实现栈题目:请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push to back、peek/pop原创 2022-02-18 19:28:46 · 120 阅读 · 0 评论 -
力扣:232.用栈实现队列
力扣:232.用栈实现队列代码随想录解析题目:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你 只能 使用标准的栈操作 —— 也就是只有 push to top,原创 2022-02-18 18:45:04 · 793 阅读 · 0 评论