队列&栈
队列/栈
斯沃福德
这个作者很懒,什么都没留下…
展开
-
剑指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 · 616 阅读 · 0 评论 -
剑指offer 73:翻转单词序列
翻转单词序列题目:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路:单词本身顺序是正常的,只需要将单词的顺序倒置即可,使用栈来做!将每个单词视为栈的元素。使用split以空格为原创 2022-05-02 17:11:54 · 394 阅读 · 0 评论 -
剑指offer 30: 包含min函数的栈
包含最小min的栈题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 min 函数操作时,栈中一定有元素。此栈包含的方法有:push(value):将value压入栈中pop():弹出栈顶元素top():获取栈顶元素min():获取栈中最小元素方法一:双栈法思路:在push的时候就将最小值记录下来,由于栈后进先出的特殊性,我们可以构造一个单调栈,保证栈内元素都是递增的,栈顶元素就是当前最小的元素。具体做法:step原创 2022-05-01 19:01:27 · 276 阅读 · 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 · 329 阅读 · 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 · 304 阅读 · 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 · 6576 阅读 · 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 · 118 阅读 · 0 评论 -
LeeCode 20题:有效的括号
链接:LeeCode 20题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。方法一: 使用辅助栈和HashMap思路:用HashMap放入成对的括号,右括号为 key ,左括号为value,可通过右括号得到对应的左括号;遍历输入的String,左括号则压栈;右括号则判断此时栈顶是否为对应的左括号,是则弹栈,否则返回flaseclass Solutio原创 2022-01-29 18:55:37 · 644 阅读 · 0 评论