排序:
默认
按更新时间
按访问量

单例模式

1.饿汉式:(线程安全)public class SinglenTon{ private final SinglenTon instance=new SinglenTon(); private SinglenTon(){}; public static SinglenTon...

2018-02-22 21:31:18

阅读数:32

评论数:0

跳表

作用/目的跳表作为一种数据结构通常用于取代平衡树。起因平衡树可以用于表示抽象的数据类型如字典和有序链表,它通过树旋转(Tree Rotation)操作强制使树结构保持平衡来保证节点搜索的效率。在数据为随机插入的情况下,平衡树性能表现良好;但数据为顺序插入或者需要删除节点的情况下,平衡树的性能就会有...

2017-12-07 16:23:28

阅读数:41

评论数:0

复杂链表的复制

问题: 请实现一个函数,复制一个复杂链表,在复杂链表中,每个节点除了有一个指向下一个节点的指针,还有一个指向该链表的任意节点的指针,或者该指针指向NULL。 eg: 复制该链表分为三步: 1.复制原始链表的任意节点,N并创建一个新的节点N’,在把节点连接到N的后面, 2.原始链表上的...

2017-11-30 13:05:03

阅读数:114

评论数:0

java中的注解

@Override-在java.lang.Override中,此注解只是用于修饰方法,表示一个方法声明打算重写超类中的一个方法声明。@Deprecated-定义在java.lang.Deprecated中,此注释可用于修饰方法,属性,类,不鼓励程序员使用这样的元素,通常是因为他很危险或者存在更好的...

2017-11-30 08:46:33

阅读数:58

评论数:0

二叉树中和为某一值的路径

题目: 输入一棵二叉树和一个整数,打印出二叉树和中节点值和为输入整数的所有路径,从树的根节点开始往下一直到叶子节点所经过的节点形成的一条路径。 输入的二叉树如图,输入的整数为22。 则打印两条路径: 10、12 10、5、7 思路:用前序遍历的方式访问某一个节点时,...

2017-11-29 10:38:09

阅读数:42

评论数:0

中介者模式(行为模式)

概念: 用一个中介对象来封装一系列的对象交互,中介者使用各对象不需要显示相互引用,从而降低耦合,而且可以独立地改变他们之间的交互。 适用于:用一个中介对象,封装一系列对象的交换,中介者是各个对象不需要显示的相互作用,从而实现了耦合松散,而且可以独立的改变他们之间的交换。 模式有点: 1.将...

2017-11-13 17:35:18

阅读数:133

评论数:0

备忘录模式

Originator(原生者) 需要被保存状态以便恢复的那个对象。 Memento(备忘录) 该对象由Originator创建,用来保存Originator的内部状态 Caretaker(管理者) 负责在适当的时间保存/恢复Originator对象的状态 适用于: 在不破坏疯转的前提...

2017-11-13 00:36:34

阅读数:209

评论数:0

原型模式

概念: Prototype模式是一种对象创建型模式,他采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型模式一样的数据。 1)由原型对象自身创建对象,也就是说,对象的创建这一动作发自原型对象的本身。 2)目标对象是原型对象的一种克隆,也就是说,通过原型模...

2017-11-12 20:34:57

阅读数:66

评论数:0

建造者模式

概念: Bulider模式也叫做建造者模式或者生成器模式。 Bulider模式是一种对象创建型模式,用来隐藏复合对象的创建过程,他把符合对象的创建过程加以抽象,通过子类继承和重载的方式,动态的创建具有复合属性的对象。 对象的创建:Bulider模式是为对象的创建而设计的模式,创建的是一个复合...

2017-11-12 19:01:06

阅读数:62

评论数:0

寻找二叉树的第k大节点

需求: 给定一棵二叉树,求出第k大的节点。 根据二叉树的中序遍历中序遍历即可找到第k大的节点。 实现: 节点定义:typedef struct node{ int data; struct node *left; struct node *right; }BTNod...

2017-11-06 13:39:57

阅读数:166

评论数:0

数的子结构

需求: 输入两颗二叉树A和B,判断B树是不是A树的子结构。如果是返回1,不是返回0。 思路 解决这个问题可以大致分为两步: 第一步:在树A中找到和树B的根节点的值一样的节点R, 第二步:判断树A中以R为根节点的子树是不是包含和树B一样的子结构。 因为在计算机中,如果两个浮点树判断大...

2017-11-05 21:16:49

阅读数:72

评论数:0

蛇形打印二叉树

需求 请实现一个函数实现蛇形打印二叉树,即第一行从左到右的顺序打印,第二行从右到左顺序打印,第三行从左到右……. eg: 上图二叉树打印结果为: 8 10 6 5 7 9 11 思路: 按照蛇形打印二叉树需要两个栈,在打印某一层节点时,把下...

2017-11-04 23:14:20

阅读数:128

评论数:0

从上到下打印二叉树

二叉树如图: 需求1 不分行从上到下打印二叉树 该事例打印结果为:8,6,10,6,7,9,11 思路: 每次打印一个节点的时候,如果该节点有子节点,那么就将子节点则吧该节点的子节点放到队列的末尾,接着到队尾的头部取出最早入队列的节点,重复前面的打印操作,直到队列中所有的元素都打印完...

2017-11-03 23:45:28

阅读数:73

评论数:0

判断一个序列是否是一棵二叉树的后序遍历序列(分治算法)

需求: 输入一个整数数组,判断该数组是不是某个二叉树的后序遍历的结果,如果是,返回1,否则返回0。 线索: 在后序遍历序列中,最后一个数字是当前二叉树的根节点,所以序列中的数字可以分为三部分,根,左子树,右子树,左子树的值都小于根节点,右子树的值都大于根节点,所以可以根据这个信息找到序列中左...

2017-11-02 22:17:36

阅读数:64

评论数:0

二叉树转换为双向链表

需求 输入一棵二叉搜索树,将该二叉树转换成一个排序的双向链表, (要求:不能创建任何新的节点只能调整树中指针的指向) 例如: 转换成双向链表后: 线索 在二叉搜索树中,左子树的值总是比根节点,右子树的值总是大于根节点,因此我们在将二叉搜索树变换成双向链表时,原先指向左子节点的指...

2017-11-02 13:14:37

阅读数:58

评论数:0

归并排序(分治算法)

之前分享过一道算法叫做:寻找一个序列中的最大子序列和,如果那个算法想通了,那么归并排序开起来会显得比较简单 归并算法基本思路 将待排序序列R[0…n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;...

2017-10-31 08:55:58

阅读数:587

评论数:0

策略模式(行为类模式)

结构图 案例; 定义一组算法,将每个算法都封装起来,并使他们之间可以互换。 实现: class Strategy{ public: virtual void crypt() = 0; virtual ~Strategy(){} };class AES :public St...

2017-10-25 22:33:26

阅读数:66

评论数:0

桥接模式(构造型设计模式)

概念 Bridge模式又叫做桥接模式,是构造型的设计模式之一,Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任,他的主要特点是保持各个部分的独立性以及对他们的拓展功能。 结构图 需求 现有发动机Engine4400c,Engine4500...

2017-10-25 22:24:05

阅读数:104

评论数:0

组合模式(结构型设计模式)

结构图 单个对象和组合对象的使用具有一致性,将对象组合成树状结构以表示“整体—部分” 文件和文件夹的案例: 实现 class IFile{ protected: string name; public: virtual void display() = 0; vi...

2017-10-25 22:14:50

阅读数:76

评论数:0

模板模式(行为型模式)

结构图 类中的方法通过虚化的方式,使得在客户端无法访问,只能通过另一个可以访问的函数,通过this进行调用。 实现class Base{ protected: virtual void primitive1() = 0; virtual void primitive2() ...

2017-10-25 22:08:14

阅读数:59

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭