![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
队列&栈
队列/栈
斯沃福德
这个作者很懒,什么都没留下…
展开
-
剑指offer 59:滑动窗口的最大值
滑动窗口的最大值 题目: 给定一个长度为 n 的数组 nums 和滑动窗口的大小 size ,找出所有滑动窗口里数值的最大值。 例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2原创 2022-05-03 20:04:27 · 639 阅读 · 0 评论 -
剑指offer 73:翻转单词序列
翻转单词序列 题目: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? 思路: 单词本身顺序是正常的,只需要将单词的顺序倒置即可,使用栈来做!将每个单词视为栈的元素。 使用split以空格为原创 2022-05-02 17:11:54 · 395 阅读 · 0 评论 -
剑指offer 30: 包含min函数的栈
包含最小min的栈 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 min 函数操作时,栈中一定有元素。 此栈包含的方法有: push(value):将value压入栈中 pop():弹出栈顶元素 top():获取栈顶元素 min():获取栈中最小元素 方法一:双栈法 思路: 在push的时候就将最小值记录下来,由于栈后进先出的特殊性,我们可以构造一个单调栈,保证栈内元素都是递增的,栈顶元素就是当前最小的元素。 具体做法: step原创 2022-05-01 19:01:27 · 280 阅读 · 0 评论 -
LeeCode 225: 用队列实现栈
用队列实现栈 题目: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: · void push(int x) 将元素 x 压入栈顶。 · int pop() 移除并返回栈顶元素。 · int top() 返回栈顶元素。 · boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。 思路: 在用栈实现队列的题中,由于栈是后进先出,头插头取,经过两个栈的倒腾之后,起顺序就可以原创 2022-04-30 18:17:59 · 336 阅读 · 0 评论 -
LeeCode 232: 用栈实现队列
用栈实现队列 题目: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 依然是使用两个栈来实现一个队列 栈是后进先出,头插头取 队列是先进先出,尾插头取 这里将输入栈倒腾到输出栈的过程 抽象成方法,在pop()、peek()方法中都会用到 import java.util.*; class MyQueue { Stack<Integer> stack1; Stack<Integer> s原创 2022-04-30 17:30:12 · 307 阅读 · 0 评论 -
剑指 Offer 09:用两个栈实现队列
题目: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 剑指offer 09 思路: 栈是先进后出,假设输入 123,输出则是321 队列是先进先出,假设输入123,输出则是123. 建立一个输入栈s1和输出栈s2,将输入栈的元素移入输出栈,再将s2的元素依次弹出,其效果即如队列。 class CQueue { privat原创 2022-02-17 23:43:36 · 6614 阅读 · 0 评论 -
LeeCode 150题/剑指offer 36题:逆波兰表达式求值
链接:Leecode 150 **题目:**根据 逆波兰表示法,求表达式的值。 有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 注意 两个整数之间的除法只保留整数部分。 可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 输入:tokens = [“2”,“1”,"+",“3”,"*"] 输出:9 解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9 来源:力扣(LeetCode) 链原创 2022-02-10 20:09:41 · 124 阅读 · 0 评论 -
LeeCode 20题:有效的括号
链接:LeeCode 20 题目: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 方法一: 使用辅助栈和HashMap 思路: 用HashMap放入成对的括号,右括号为 key ,左括号为value,可通过右括号得到对应的左括号; 遍历输入的String,左括号则压栈;右括号则判断此时栈顶是否为对应的左括号,是则弹栈,否则返回flase class Solutio原创 2022-01-29 18:55:37 · 659 阅读 · 0 评论