算法初学
文章平均质量分 76
hekaikai666
初学Java,有点小想法
展开
-
【栈和队列】getMin功能的栈(返回栈中最小元素的操作)
功能需求: 实现一个具有特殊功能的栈,首先要具有栈所要具备的功能,再实现此栈执行后能够返回栈中最小值的操作。其中pop、push、getMin的操作复杂度都是O(l)。有必要时可以使用现成的站结构操作来设计栈类型。(pop:弹出栈顶元素、push:压栈、getMin获取最小栈元素)详细解析: 由于要操作一组数据,并且存入栈中,那么我们首先考虑到的是栈就需要分...原创 2018-08-22 21:16:51 · 1895 阅读 · 0 评论 -
【栈与队列】仅用递归函数算法来操作一个栈,使栈逆序排列。
功能需求 一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1.如果将这个栈经过系列转置之后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,而不是使用其他数据结构,也不能使用第二个栈。详细解析 在之前我们曾经使用过两个栈操作一组数据,经过两次压栈出栈操作,我们可以得到逆序队列。但是题目要求的是主要...原创 2018-08-26 23:54:55 · 478 阅读 · 0 评论 -
【栈和队列】定义一个类,实现一个队列,队列里有两个栈,此类支持队列的基本操作
功能需求 在一个类中,定义两个公共访问的栈,这两个栈通过交互形成一个队列,保持先进先出的特点并且支持入栈add、poll、peek的操作。同时算法复杂度不能太高。详细解析 栈的特点是先进后出,而队列的特点是先进先出,我们把两个栈首尾相接起来,一个压入栈,一个弹出栈,就可以实现相应的队列的操作。具体实现是定义一个压入栈stackPush,在压入数据时只往这个栈...原创 2018-08-23 20:57:16 · 478 阅读 · 0 评论 -
【栈与队列】移动窗口生成最大值的数组
功能需求 有一个整数型数组arr和一个大小为w的窗口从数组的最左端滑到最右端,窗口每次向右滑动一个位置。就像是一个滑动的指针,从头指向尾,然后输出窗口中数据的最大值。 例如,一组数据为arr[] = [4,3,5,4,3,3,6,7],窗口大小为w = 3时: [ 4 3 5 ] 4 3 3 6 ...原创 2018-08-29 00:40:19 · 206 阅读 · 0 评论 -
【栈与队列】求解汉诺塔问题(1.用递归的方式)
功能需求事先声明:博主在一本算法书上看到这个问题,对此有一些想法,有一部分出自抄腾,博主一心想表达自己对于处理问题的观点.对于此无需注明转发出处.此汉诺塔问题递归算法并未解决柱子还原之前不能为空问题,此种方法还有待优化. 汉诺塔问题一直是数据算法结构中比较经典的一个问题,但是还需要略微解释一下:相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置...转载 2018-09-08 15:25:49 · 1135 阅读 · 0 评论 -
【栈与队列】求解汉诺塔问题(2.用栈非递归的方式)
功能需求(栈非递归的方式)事先声明:博主在一本算法书上看到这个问题,对此有一些想法,有一部分出自抄腾,博主一心想表达自己对于处理问题的观点.对于此无需注明转发出处.此汉诺塔问题递归算法并未解决柱子还原之前不能为空问题,此种方法还有待优化. 汉诺塔问题一直是数据算法结构中比较经典的一个问题,但是还需要略微解释一下:相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游...转载 2018-09-20 20:15:48 · 2045 阅读 · 0 评论