
《程序员代码面试指南》学习笔记
《程序员代码面试指南》学习笔记
RaymondLove~
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1_1栈和队列_设计一个有Getmin功能的栈
1. 题目:实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作2. 思路:用一个辅助栈缓存当前栈中的最小值2. Answer:#include using namespace std;templateclass MyStack{public: void push(T &t){ stackData.push(t); if (minData.e原创 2016-12-26 11:22:32 · 354 阅读 · 0 评论 -
1_7生成窗口最大值数组
1. 题目:有一个整形数组arr和一个大小为w的窗口从数组的最左边滑倒最右面,窗口每次向右边滑动一个位置。例如:[4,3,5,4,3,3,6,7],窗口大小为3时,则产生的窗口最大值为:[5,5,5,4,6,7].2. 思路:(每次看到一大堆的文字解释我都不想看,为什么不能有一个图示呢?要跪了)。简单的说利用双端队列实现窗口最大值得更新!根据左程云大神的思路是这样子滴!如图所示,利用双端队原创 2016-12-27 10:55:54 · 518 阅读 · 0 评论 -
下决心,努力准备找工作~
之前断断续续的看了三、四本面试算法的书,刷了一些题,从今天开始,争取两个月刷一遍《程序员代码面试指南》,并认真记录自己的理解,加深记忆和理解~加油,争取找一个自己喜欢的工作~在这个过程中我一定要不断告诫自己:重在坚持哦,日积月累,脚踏实地,不要浮躁,不要嫉妒,努力~克服掉自己最讨厌的缺点,加油~做个快乐努力的小女程序员原创 2016-12-26 19:59:51 · 356 阅读 · 0 评论 -
1_6_2用栈来求解汉诺塔问题-用栈来实现
1. 问题同1_6_12. 思路:书中提供了另外一种思路,用非递归的方法,利用栈来模拟汉诺塔的三个塔。(To be honest,我觉得这个思路真的很特别,很特别,特别的我想了一个多小时才想明白)这个方法需要遵循两个规则:小压大原则,相邻不可逆原则。小压大原则就是,小的塔始终在大的塔上面。在讲相邻不可逆原则之前,必须说一下亮点:由于不能跨越式移动塔,所以可以这个移动塔的动作归纳为四个原子动原创 2016-12-26 19:38:55 · 829 阅读 · 0 评论 -
1_6_1用栈求解汉诺塔问题_利用递归求解增强版汉诺塔问题
1. 传统汉诺塔问题:汉诺(Hanoi)塔问题:古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求打印移动的步骤。如果只有一个盘子,则不需要利用B座,直接将盘子从A移动到C。增强版问题原创 2016-12-26 19:04:07 · 569 阅读 · 0 评论 -
1_6_0用栈来求解汉诺塔问题_传统汉诺塔问题求解
1. 传统的汉诺塔问题:古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求打印移动的步骤。如果只有一个盘子,则不需要利用B座,直接将盘子从A移动到C。解决思路:利用递归。目标:想办法依原创 2016-12-26 18:47:41 · 487 阅读 · 0 评论 -
1_5用一个栈实现另一个栈的排序
1. 题目: 一个栈中元素的类型为整形,现在想将该栈从顶到底按从大到小的顺序,只需申请一个栈。2,.思路:我能说最开始我没有读懂题目吗,囧囧囧,语文不好的人不想再解释啦!申请一个辅助栈,存储排序的元素。3. Answer#include #include using namespace std;void sortStack(stack &input){ stack help原创 2016-12-26 14:18:49 · 282 阅读 · 0 评论 -
1_4猫狗队列
1. 题目:《程序员代码面试指南》 第10页2. 思路和想法:太厉害了!书中把可能想到的错误解法都给列了出来,并且我在思考的时候果断命中两个错误想法()。不能改写原来的类,那么只能去封装自己的类,对原来的类进行修饰,用到时间戳标记每个对象的先后顺序,利用两个队列分别存储dog和cat。思考的一定要周到全面!!!!Fighting3. Answer:#include#include #i原创 2016-12-26 11:38:34 · 381 阅读 · 0 评论 -
1_3仅用递归函数和栈操作逆序一个栈
1. 题目:仅用递归和栈提供的操作来实现对栈的逆序2. 思路:除了书中列出的方法,我在想可不可以直接把一个栈中的元素一次弹出放入另一个辅助栈中,实现对栈的逆序(缺点是,需要辅助栈空间)。所以,用C++实现了书中的方法,并且实现了一下我自己的想法 (包含在#if 0 ...#endif之间的代码)。3. Answer:#includeusing namespace std;#if原创 2016-12-26 11:35:12 · 293 阅读 · 0 评论 -
1_2由两个栈组成的队列
1. 题目:用两个栈实现一个队列2. Answer:#include using namespace std;templateclass TwoStackQueue{public: void add(T &t) { stack_push.push(t); } void poll() { if (stack_push.empty()&&stack_pop.emp原创 2016-12-26 11:30:28 · 305 阅读 · 0 评论 -
1_8构造数组的maxtree
1. 题目: 见左程云老师的《程序员代码面试指南》P222. 思路:不得不说,哎作为一个水平低的菜鸟,每一道题都很虐心啊。。。建立树的原则:(1)每一个数的父节点就是——它左边第一个比它大的数和它右边第一个比她大的数中,较小的一个 (2)如果一个数左边没有比它大的数,右边也没有。就是说,这个数是整个数组的最大值,那么这个数就是Maxtree的节点。接下来就是首先:如何找到每一原创 2016-12-28 08:24:42 · 444 阅读 · 0 评论