栈
文章平均质量分 63
也非野人
这个作者很懒,什么都没留下…
展开
-
可查询最值的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 代码如下: 定义两个栈,一个stackData,一个stackMin。将数组中的元素一个个压入stackData栈的时候,如果第一次压入栈,则将第一个元素也压入到stackMin栈中去,然后继续压入第二个元素到stackData里面,在压入的时候需要判断一下压入的值是否比stackMin中栈顶的值大,如果大,则压入一个和栈原创 2016-05-16 21:57:52 · 350 阅读 · 0 评论 -
双栈队列
编写一个类,只能用两个栈结构实现队列,支持队列的基本操作(push,pop)。 给定一个操作序列ope及它的长度n,其中元素为正数代表push操作,为0代表pop操作,保证操作序列合法且一定含pop操作,请返回pop的结果序列。 测试样例: [1,2,3,0,4,0],6 返回:[1,2] 题目意思是说数组里面有几个0就要出栈几次,所以先将所有元素压栈到stack1中,然原创 2016-05-16 22:31:52 · 411 阅读 · 0 评论 -
双栈排序
请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。 给定一个int[] numbers(C++中为vector),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。 测试样例: [1,2,3,4,5] 返回:[5,4,3,2,1] 代码如原创 2016-05-18 21:57:06 · 727 阅读 · 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。第五原创 2016-05-20 17:37:54 · 885 阅读 · 0 评论 -
数组变树
对于一个没有重复元素的整数数组,请用其中元素构造一棵MaxTree,MaxTree定义为一棵二叉树,其中的节点与数组元素一一对应,同时对于MaxTree的每棵子树,它的根的元素值为子树的最大值。现有一建树方法,对于数组中的每个元素,其在树中的父亲为数组中它左边比它大的第一个数和右边比它大的第一个数中更小的一个。若两边都不存在比它大的数,那么它就是树根。请设计O(n)的算法实现这个方法。 给定原创 2016-05-20 23:24:56 · 1097 阅读 · 0 评论