
栈
笔记 题目
liujjjiyun
这个作者很懒,什么都没留下…
展开
-
套碗游戏的取碗顺序问题
小F正在玩一个套碗的游戏,每个碗都有一个编号,从1到n,它们从大到小被套在一根木棍上。小F只能从木棍上取最上面的碗,每次只能取一个。现在你需要判断给定的取碗顺序是否可行。为了模拟取碗的过程,我们可以使用一个栈(Stack)来辅助。栈的特点是后进先出(LIFO),非常适合模拟取碗的过程。你有一个从大到小排列的碗堆,编号从1到n。每次只能取最上面的碗。你需要判断给定的取碗顺序是否可以通过合法操作实现。例如,对于2个碗,取碗的顺序可以是。,这两种顺序都是合法的。不可能通过合法操作实现,因此该顺序不可行。原创 2025-02-05 14:21:09 · 145 阅读 · 0 评论 -
栈区和堆区的区别
当系统收到程序的内存分配申请时,会遍历该链表寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并把该结点空间分配给程序。可见,堆容易造成内存碎片;所以栈在程序中应用最广泛,函数调用也是利用栈来完成,调用过程中的参数,返回地址,栈基指针和局部变量等都采用栈的方式存放。:栈在函数调用时,首先压入是函数实参,然后主调函数中下条命令(函数调用语句的下条执行语句)的地址压入,最后是被调函数的局部变量。:栈不会存在碎片问题,因为栈是先进后出的队列,内存块弹出栈之前,在其上面的后进的栈内容已弹出。原创 2025-01-30 13:41:53 · 239 阅读 · 0 评论 -
用两个队列实现栈
【代码】用两个队列实现栈。原创 2025-01-29 11:54:24 · 148 阅读 · 0 评论 -
用两个栈实现一个队列
【代码】用两个栈实现一个队列。原创 2025-01-29 11:49:59 · 200 阅读 · 0 评论 -
实现中缀转后缀
【代码】实现中缀转后缀。原创 2025-01-29 11:28:28 · 373 阅读 · 0 评论 -
栈的实现
【代码】栈的实现。原创 2025-01-29 11:24:07 · 207 阅读 · 0 评论 -
相邻重复字母删除问题
题目要求删除字符串中所有相邻且相同的字母,直到无法再删除任何字母。核心信息是每次删除相邻的重复字母,直到字符串中不再有相邻的重复字母。选用栈作为数据结构来解决这个问题,因为栈可以方便地处理相邻元素的比较和删除操作。通过遍历字符串,将字符依次压入栈中,如果当前字符与栈顶字符相同,则弹出栈顶字符,否则将当前字符压入栈中。最终栈中剩余的字符即为处理完所有重复项删除操作后的字符串。请返回最终处理完所有重复项删除操作后的字符串。可以保证返回的答案是唯一的。她发现可以进行一种操作:选择两个相邻且相同的字母并删除它们。原创 2025-01-17 19:09:33 · 250 阅读 · 0 评论 -
价格优惠计算问题
题目要求计算小F能获得的总优惠,优惠的条件是当前商品的价格大于等于前面某个商品的价格,且该商品是离当前商品最近的满足条件的商品。每件商品有一个价格p[i]p[i],小F可以获得的优惠取决于该商品之前的一件商品。如果某一件商品的价格p[i]p[i]大于等于前面的某个商品p[j]p[j],则小F可以享受该商品p[j]p[j]的价格作为优惠,前提是p[j]p[j]是离p[i]p[i]最近的且满足条件的商品。具体来说,如果某件商品的价格大于等于它之前某个商品的价格,那么小F可以享受那个商品的价格作为优惠。原创 2025-01-13 15:05:29 · 659 阅读 · 0 评论 -
实现线程安全的链式栈
【代码】实现线程安全的链式栈。原创 2024-12-30 19:15:26 · 133 阅读 · 0 评论 -
最小字符串价值问题
次操作将字符串的价值最小化。字符串的价值定义为删除相邻相同字符后剩下的字符长度。我们可以通过栈来模拟删除相邻相同字符的过程,然后利用贪心策略来决定如何进行。他可以进行一些操作来修改字符串,并且有一个目标:将字符串的价值最小化。所谓字符串的价值,是指通过多次操作删除相邻的相同字符后剩下的字符长度。次修改,目的是让最终得到的字符串价值尽可能小。小M每次操作可以选择修改其中的一个字符,次操作后,字符串的最小价值吗?次操作以最小化字符串的价值。你能帮助小M计算通过。原创 2024-12-30 18:45:29 · 452 阅读 · 0 评论 -
之字形打印二叉树 剑指offer
在打印根节点的时候,先后把节点2和节点3保存到里。在打印节点3时,把它的两个子节点6和7保存到栈里。此时由于节点7位于栈顶,接下来将打印节点7,而不是节点2。我们在打印某一层的节点时,把下一层的子节点保存到相应的栈里如果当前打印的是奇数层(第一层、第三层等),则先保存左子节点再保存右子节点到第一个栈里;请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。在打印一个栈里的节点时,它的子节点保存到另一个栈里。原创 2024-12-16 19:07:13 · 255 阅读 · 0 评论 -
分行从上到下打印二叉树 剑指offer
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。原创 2024-12-15 18:22:55 · 149 阅读 · 0 评论 -
不分行从上到下打印二叉树 剑指offer
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如,下图发二叉树,依次打印出8,6,10,5,7,9,11。原创 2024-12-15 18:14:10 · 134 阅读 · 0 评论 -
栈的压入、弹出序列 剑指offer
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列{1,2,3,4,5}是某栈的压栈序列,序列{4,5,3,2,1}是该压栈序列对应的一个弹出序列,但{4,3,5,1,2}就不可能是压栈序列的弹出序列。原创 2024-12-15 18:03:00 · 299 阅读 · 0 评论 -
包含min函数的栈 剑指offer
定义栈的数据结构,请在该类型中,实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push和pop的时间复杂度都是O(1)。m_data是数据栈, m_min是辅助栈。原创 2024-12-15 17:48:46 · 270 阅读 · 0 评论