
栈和队列
凌风暨
最怕你一生碌碌无为,还安慰自己平凡可贵
展开
-
栈和队列——由两个栈组成的队列
【题目】 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)【代码实现】import java.util.Stack; class TwoStacksQueue{ public Stack<Integer> stackPush; public Stack<Integer> stackPop; public TwoStacksQueue(){原创 2017-08-30 22:57:29 · 308 阅读 · 0 评论 -
栈和队列——求最大子矩阵的大小
【题目】 给定一个整型矩阵map,其中的值只有0和1两种,求其中全是1的所有矩形区域中,最大的矩形区域为1的数量。 例如: 1 1 1 0 其中,最大的矩形区域有3个1,所以返回3 再如: 1 0 1 1 1 1 1 1 1 1 1 0 其中,最大的矩形区域有6个1,所以返回6【解答】 1、矩阵的行数为N,以每一行做切割,统计以当前行作为底原创 2017-10-18 23:38:37 · 338 阅读 · 0 评论 -
栈和队列——构造数组的MaxTree(java实现)
【题目】 定义二叉树节点如下:class Node{ public int value; public Node left; public Node right; public Node(int data){ this.value = data; } }一个数组的MaxTree定义如下:· 数组必须没有重复元素· MaxTree是一颗二叉树原创 2017-09-30 21:30:45 · 380 阅读 · 0 评论 -
栈和队列——生成窗口最大值数组
【题目】 有一个整型数组arr和一个大小为w的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置。 例如,数组为{4,3,5,4,3,3,6,7},窗口大小为3时: {4 3 5} 4 3 3 6 7 4 {3 5 4} 3 3 6 7 4 3 {5 4 3} 3 6 7 4 3 5 {4 3 3} 6 7 4 3 5 4 {3 3 6} 7 4原创 2017-09-09 11:06:07 · 496 阅读 · 0 评论 -
栈和队列——设计一个有getMin功能的栈(二)
【题目】 设计一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作 【要求】 1、pop、push、getMin操作的时间复杂度都是O(1) 2、设计的栈类型可以使用现成的栈结构 【代码实现】import java.util.Stack; class Mystack2{ private Stack<Integer> stackDa原创 2017-08-29 21:05:20 · 287 阅读 · 0 评论 -
栈和队列——设计一个有getMin功能的栈(一)
【题目】 设计一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作 【要求】 1、pop、push、getMin操作的时间复杂度都是O(1) 2、设计的栈类型可以使用现成的栈结构 【代码实现】//实现一个特殊的栈,在实现栈的基本功能的基础上在实现返回栈中最小元素的操作 import java.util.*; class MyStack1 {原创 2017-08-29 13:20:05 · 316 阅读 · 0 评论 -
栈和队列——用栈来求解汉诺塔问题(非递归)(java实现)
【题目】 汉诺塔问题比较经典,这里修改一下游戏规则:现在限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中间。求当塔有N层的时候,打印最优移动过程和最优移动总步数。【解答】 上一篇用的是递归的方法解决这个问题,这里我们用栈来模拟汉诺塔的三个塔,也就是不用递归的方法 原理是这样的:修改后的汉诺塔问题不能让任何塔从左直接移动到右,也不能从右直接原创 2017-09-06 13:17:02 · 2063 阅读 · 2 评论 -
栈和队列——用一个栈实现另一个栈的排序
【题目】 一个栈中元素的类型为整形,现在想将该栈从顶到低从大到小顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?【解答】 将要排序的栈记为stack,申请的辅助栈记为help。在stack上执行pop操作,弹出的元素记为cur。 · 如果cur小于或等于help的栈顶元素,则将cur直接压入help; · 如果cur大于help的原创 2017-09-04 21:50:52 · 298 阅读 · 0 评论 -
栈和队列——如何仅用递归函数和栈操作逆序一个栈
【题目】 一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构【解答】 本题考察栈的操作和递归函数的设计,我们需要设计出两个递归函数,代码如下【代码实现】import java.util.Stack; class Demo{ //递归一原创 2017-08-31 13:44:47 · 403 阅读 · 0 评论 -
栈和队列——最大值减去最小值小于或等于num的子数组数量
【题目】 给定数组arr和整数num,共返回有多少个子数组满足如下情况: max(arr[i…j]) - max(arr[i…j]) <= num max(arr[i…j])表示子数组arr[i…j]中的最大值,min(arr[i…j])表示子数组arr[i…j])中的最小值 普通的逻辑解法就是,找到arr的所有子数组,然后对每一个子数组做遍历找到其中的最小值和最大值,然后看看这原创 2017-11-03 15:58:30 · 454 阅读 · 0 评论