摘要: 生成窗口最大值数组 题目: 有一个整型数组arr和一个大小为w的窗口从数组的最左边到最右边,窗口每次向右边滑一个位置 例如,数组为[4 3 5 4 3 3 6 7],窗口大小为3时。 [4 3 5] 4 3 3 6 7 输出5 4 [3 5 4 ]3 3 6 7 输出5 4 3 [5 4 3 ]3 阅读全文
posted @ 2020-03-06 17:38 霓裳梦竹 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 用栈来解决汉诺塔问题 题目 修改汉诺塔问题的游戏规则:限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中间。求当塔有N层的时候,打印最优移动和最优移动总步数。 要求: 方法一:递归的方法 方法二:非递归的方法,用栈来模拟汉诺塔的三个塔 思路 方法一:递归的方法 首先 阅读全文
posted @ 2020-03-06 16:55 霓裳梦竹 阅读(723) 评论(0) 推荐(0) 编辑
摘要: 题目 一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序? 思路 将要排序的栈记为stack,申请的辅助栈记为help,在stack上执行pop操作,弹出的元素记为cur. 如果cur小于或等于hel 阅读全文
posted @ 2020-03-06 14:29 霓裳梦竹 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 题目 宠物猫和狗的类如下: 实现个猫狗队列的结构,需求如下: 用户可以调用add方法将cat类或dog类的实例放入队列中 用户可以调用pullAll方法,将队列中所有的实例安装进队列的先后顺序依次弹出 用户可以调用pollDog方法,将队列中的dog类的实例按照进队列的先后顺序依次弹出 用户可以调用 阅读全文
posted @ 2020-03-06 13:59 霓裳梦竹 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 题目 仅用递归操作和栈逆序 一个栈。 一个栈依次压入1、2、3、4、5 那么从栈顶到栈底分别是5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归来实现 ,不能用其他数据结构。 思路 需要两个递归函数 递归函数一:将栈stack的栈底元素返回 阅读全文
posted @ 2020-03-06 11:37 霓裳梦竹 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 题目 编写一个类,用两个栈实现队列,支持队列的基本操作( `poll peek`) 思路 栈的特点是先进后出,而队列的特定是先进先出,我们用两个栈正好能把顺序反过来,实现类似队列的操作。 一个栈作为压入栈,在压入数据的时候只往这个栈中压入,记为stackPush,另一个栈只作为弹出栈,在弹出数据的时 阅读全文
posted @ 2020-03-06 10:56 霓裳梦竹 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 题目 设计一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。 要求 `push getMin`操作的时间复杂度都是O(1) 设计的栈类型可以使用现成的栈结构 解答 在设计上使用两个栈,一个栈用来保存当前栈中的元素,其功能和一个正常的栈没有区别,这个栈记为 ;另一个栈用于保存每一 阅读全文
posted @ 2020-03-06 09:58 霓裳梦竹 阅读(144) 评论(0) 推荐(0) 编辑