- 博客(10)
- 收藏
- 关注
原创 算法通关村——栈和队列问题解析
入栈操作时,首先将元素入队到 queue2 ,然后将 queue1 的全部元素依次出队并入队到 queue2 ,此时 queue2 的前端的元素即为新入栈的元素,再将 queue1 和 queue2 互换,则 queue1 的元素即为栈内的元素,queue1 的前端和后端分别对应栈顶和栈底。思路:为了满足栈的特性,即最后入栈的元素最先出栈,在使用队列实现栈时,应满足队列前端的元素是最后入栈的元素。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(
2023-09-18 10:22:33 70
原创 算法通关村白银挑战——栈的经典算法问题
思路:运用哈希表先将一对一对的字符串进行存储,分别作为 key 和 value,如果是 key 就放入栈中,如果是 value 就进行比较消除,消除失败则返回 false。思路:用另一个栈来存储最小值,把每次遍历到的最小值输入,那么他就会生成一个带有排序功能的队列(最小堆)。链接:https://leetcode.cn/problems/min-stack/链接:https://leetcode.cn/problems/max-stack/设计一个最大栈数据结构,既支持栈操作,又支持查找栈中最大元素。
2023-09-17 19:31:51 68 1
原创 算法通关村—如何基于数组(或者链表)实现栈
栈的底层实现是顺序表或链表,只允许在一端进行插入和删除操作。允许操作的一段叫做栈顶 (Top),不允许操作的一段叫做栈底 (Buttom), 插入元素的操作称为入栈(push),删除元素的操作叫做出栈(pop)
2023-09-17 19:30:35 72 1
原创 算法村通关第二关——手写链表反转
这里其实相当于开辟了一条新的链表。将原来的链表进行从头遍历,再将遍历到的元素插入到新的链表中。最后只需要返回虚拟头节点的next即可。总体思路是比较的简单。核心在于不断地调整两个节点的相互关系,实现指向关系的反转。无法理解,日后研究…
2023-09-01 16:04:32 116 1
原创 算法村通过第二章——链表反转的拓展问题
这种方法主要是分成两个步骤,先把链表要翻转的部分拿出来,独立成为一个新的链表进行翻转(运用我们之前学的206题的翻转链表)。这道题比较新颖,可以用栈来实现,因为我们需要从个位开始加起(考虑到进位的问题),所以我们必须从链表最后开始操作,这样就需要用栈将其暂存起来。这个和上一道题的实现思路是一样的,用栈进行暂存,之后再用头插法构造出一个新的链表来。即使后续有可能优化成一个栈进行存储,也需要耗费一定的另外空间存储进位的信息。该方法的整体思想是:从开始反转的位置算起,两两节点进行反转。
2023-09-01 16:01:35 122 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人