摘要: 例子来源于《大话设计模式》第二章。 策略模式的作用:封装算法 在简单工厂模式中,客户端需要认识两个类,分别是工厂类和抽象方法类。而在策略模式里,客户端只需要认识一个类,就是context类。因此,策略模式比简单工厂模式对算法的封装更加彻底。在 在学习一个设计模式的时候,一定要理解它的UML图,这对设 阅读全文
posted @ 2019-08-13 16:03 妮妮熊 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 这个例子来自于《大话设计模式》的第一章。 简单工厂模式有3个基本的类:工厂类,抽象产品类,具体产品类。 使用抽象产品类作为一个基类,其余具体产品类继承它的基础数据,然后实现具体的功能。工厂类根据客户的需求来决定生成哪一个具体产品的对象。这种想法下抽象产品类应该设定为抽象类。这道题目虽然思路并不难,实 阅读全文
posted @ 2019-08-11 21:19 妮妮熊 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 首先来说一个问题,线性表和链表的区别。 线性表是n个数据元素的有限序列,复杂的线性表中,数据元素可以有若干个数据项构成一个记录。线性表可以有两种表示方式,顺序表示和链式表示。线性表的顺序表示是用一组连续的内存存储线性表的数据元素。而线性表的链式表示是用随机的存储单元来存储线性表的元素,这种线性表就是 阅读全文
posted @ 2019-08-11 11:33 妮妮熊 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 关键字相同的项排序后顺序不变就是稳定的排序算法,否则是不稳定的排序算法。 排序分为内部排序和外部排序,内部排序只需要访问内存,外部排序还需要访问外存。 1.冒泡排序(稳定排序算法) 很经典简单的方法,每个数字从最下面开始一层一层往上走,像冒泡泡一样。 冒泡是用两个嵌套的for循环实现的,基本操作(比 阅读全文
posted @ 2019-08-09 16:12 妮妮熊 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 这道题是典型的分治法,将一个大问题分解成几小步解决。一定要注意在使用指针的时候指针指向是否为空的问题。在指针指向时,可以将一个指向为空的指针作为赋值来写,但是空指针不能指向任何地方(指向空也不行),这点一定要记住。 之前把这篇写在另一个博客了,现在补回来。 阅读全文
posted @ 2019-08-08 11:22 妮妮熊 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 这个题目的思路跟上一个很相似,还是回溯法。就是从第一个框开始判断是否大于限定值,然后判断它的上下左右。这个题可以明显看出来判断出来的应该是左上方区域,所以从0作为起点也很适合。 回溯法似乎很喜欢用递归,做题的时候注意边界值的处理。 这道题是剑指offer 的最后一个题了。我写的这个系列博客也进入了尾 阅读全文
posted @ 2019-07-31 11:01 妮妮熊 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 这个题目用的是回溯法。 之前回溯法练得比较少,所以这个题还是需要重视。 回溯法是算法里学过的,就是从第一个可能得路径开始找,一直找到最后一个。 这个题目要注意一下几点: 1.从第一个开始找,如果第一个元素等于要寻找的字符串的第一个元素,就继续去寻找该元素的上下左右,看是否等于其下一个。一直匹配到最后 阅读全文
posted @ 2019-07-30 10:27 妮妮熊 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 分两步: 首先找到窗口内的内容,然后找到窗口内的最大值。 上面的解法是我自己想的,看了剑指offer,这个题是在栈与队列这一节放的,也就是考点是栈与队列。用上面的方法做时间复杂度是O(nk),但是用队列的方法做复杂度可以到O(n),也就是说每次滑动窗口可以在O(1)里找到最大值。 很大提高了效率,那 阅读全文
posted @ 2019-07-29 20:37 妮妮熊 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 注意几点: 1.要是排序后的中位数,所以要对输入的数字排序 2.注意输出的类型是double 阅读全文
posted @ 2019-07-29 20:13 妮妮熊 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 根据二叉搜索树的特点,它中序遍历的顺序就是从小到大的顺序。因此只要中序遍历找到第k个就可以。 1 class Solution { 2 public: 3 TreeNode* KthNode(TreeNode* pRoot, int k) 4 { 5 if (pRoot == NULL||k==0) 阅读全文
posted @ 2019-07-29 19:50 妮妮熊 阅读(84) 评论(0) 推荐(0) 编辑