![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构 队列和栈
文章平均质量分 54
温酒知莲华
这个作者很懒,什么都没留下…
展开
-
[LintCode]12.带最小值操作的栈
实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。注意事项:如果堆栈中没有数字则不能进行min方法的调用样例:如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1class原创 2017-07-19 16:45:29 · 217 阅读 · 0 评论 -
[LintCode]40.用栈实现队列
正如标题所述,你需要使用两个栈来实现队列的一些操作。队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。pop和top方法都应该返回第一个元素的值。样例比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2思路:实现上是一原创 2017-08-05 15:45:54 · 1030 阅读 · 0 评论 -
栈的反转
实现一个栈的逆序,但是只能用递归函数和这个栈本身的pop操作来实现,而不能自己申请另外的数据结构。给定一个整数数组A即为给定的栈,同时给定它的大小n,请返回逆序后的栈。测试样例:[4,3,2,1],4返回:[1,2,3,4]class StackReverse {public: vector reverseStack(vector A,原创 2017-08-28 16:18:37 · 933 阅读 · 0 评论 -
双栈排序
请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。给定一个int[] numbers(C++中为vector<int>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。测试样例:[1,2,3,4,5]返回:[5,4,3,2,1]原创 2017-08-28 16:58:21 · 200 阅读 · 0 评论 -
栈和队列总结
/*使用标准库的栈*/ #include //头文件 stack s; //定义一个 int 型的栈 s.empty() //如果栈为空返回true,否则返回false s.size() //返回栈中元素的个数 s.pop() //删除栈顶元素但不返回其值 s.top()原创 2017-08-27 17:46:54 · 249 阅读 · 0 评论 -
滑动窗口
有一个整型数组 arr 和一个大小为 w 的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置。 返回一个长度为n-w+1的数组res,res[i]表示每一种窗口状态下的最大值。 以数组为[4,3,5,4,3,3,6,7],w=3为例。因为第一个窗口[4,3,5]的最大值为5,第二个窗口[3,5,4]的最大值为5,第三个窗口[5,4,3]的最大值为5。第四个窗口[4,3,3]的最大值为4。第五原创 2017-08-28 19:45:06 · 441 阅读 · 0 评论 -
数组变树
对于一个没有重复元素的整数数组,请用其中元素构造一棵MaxTree,MaxTree定义为一棵二叉树,其中的节点与数组元素一一对应,同时对于MaxTree的每棵子树,它的根的元素值为子树的最大值。现有一建树方法,对于数组中的每个元素,其在树中的父亲为数组中它左边比它大的第一个数和右边比它大的第一个数中更小的一个。若两边都不存在比它大的数,那么它就是树根。请设计O(n)的算法实现这个方法。给定原创 2017-08-28 21:39:46 · 491 阅读 · 0 评论