随笔分类 -  数据结构与算法

“每日一题”计划!这应该是我自己对自我的约束,也是鼓励自己好好学习常用的算法。看自己能坚持多久吧。
摘要:【问题】 一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序? 【分析】 利用栈访问的特性(FILO),将每一个数放在正确的位置,直到stack栈为空,最后将help一并压入stack栈中。 help 阅读全文
posted @ 2020-03-01 12:34 ZhuSenlin 阅读(147) 评论(0) 推荐(0)
摘要:【题目】 有猫狗类如下: 要求实现如下功能: add:方法将cat类或dog类的实例放入队列 pollAll : 将队列出队(按照队列的先后顺序) pollDog:将队列的dog类实例按照队列的先后顺序出队 pollCat:同理 isEmpty:队列是否为空 isDogEmpty:检查队列是否存在d 阅读全文
posted @ 2020-03-01 09:22 ZhuSenlin 阅读(202) 评论(0) 推荐(0)
摘要:【题目】 一个栈依次压入1,2,3,4,5;那么从栈顶到栈底分别为5,4,3,2,1.。将栈转置 【要求】 只能用递归函数来实现。 【分析】 该算法需要两个递归函数。分别是 getAndRemoveLastElement() 和 Reverse() |函数名|描述| | | | |getAndRem 阅读全文
posted @ 2020-02-29 18:19 ZhuSenlin 阅读(304) 评论(0) 推荐(0)
摘要:【题目】 编写一个类,用两个栈实现队列,支持队列的基本操作(enQueue、deQueue、peek) 【分析】 队列的访问规则是First In First Out;栈的访问规则是First In Last Out。 用栈来模拟队的访问规则,核心思想就是: 将入栈的顺序逆序,然后再出栈 根据上面的 阅读全文
posted @ 2020-02-29 10:46 ZhuSenlin 阅读(168) 评论(0) 推荐(0)
摘要:【题目】 实现一个栈,在实现栈的基本功能的前提下,再实现返回最小元素的操作。 【要求】 pop、push、getMin操作的时间复杂度都是O(1) 设计的类可以使用现成的栈结构。 【分析】 想要使得获取最小值的时间复杂度为O(1),最简单的方法就是提前将最小值记录下来,当我们需要获取时便可直接获取 阅读全文
posted @ 2020-02-28 23:24 ZhuSenlin 阅读(411) 评论(0) 推荐(0)