摘要:
1,结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为 阅读全文
摘要:
1,创建者模式 创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。 这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。 创建型模式分为: 单例模式 工厂方法模式 抽象工程模式 原型模式 建造者模式 1.1 单例设计模式 单例模式(Singleton Pat 阅读全文
摘要:
1.四则运算 输入一个表达式(用字符串表示),求这个表达式的值。 保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表达式一定合法。 示例: 输入: 3+2*{1+2*[-4/(8-6)+7]} 输出: 阅读全文
摘要:
KMP算法 1.KMP算法的应用场景:字符串匹配问题。 假设str1 = BBC ABCBAB ABCDABCDABDE, str2 = ABCDABD,然后判断str1是否还有str2,如果存在,就返回第一次出现的位置 ,如果没有返回-1。 解法1:暴力匹配算法 假设str1匹配到i位置,字串st 阅读全文
摘要:
动态规划算法 1)动态规划算法介绍 动态规划算法核心思想:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。 动态规划算法与分治算法类似,将待求解的问题分解为若干个子问题,先求解子问题,然后从这些子问题的解的到原问题的解。 与分治法不同的是,适合用动态规划求解点问题,经分解得到子问题往往 阅读全文
摘要:
图 1.图的基本介绍 图是一种数据结构,其中节点可以具有零个或多个相邻元素,两个节点之间的连接称为边,结点称为顶点。如图 2.图的常用概念: 无向图:顶点之间连接没有方向,比如A-B,既可以A-B也可以B-A. 路径:比如从D → C的路径又 1)D → B → C 2)D → A → B → C 阅读全文
摘要:
多路查找树 二叉树与B树 1.二叉树的问题分析 二叉树的操作效率高,但也存在一些问题: 1)二叉树需要加载进内存,如果二叉树的结点少,没什么问题,但是如果二叉树的结点很多,就会存在如下问题: ① 在构建二叉树时,需要多次进行I/O操作,结点海量,构建二叉树,速度又影响。 ②结点海量,也会造成 阅读全文
摘要:
平衡二叉树 1.基本介绍 1)平衡二叉树也叫平衡二叉搜索树,又被称为AVL树,可以保证查询效率查询。 2)特点:它是一颗空树或它的左右子树的高度差的绝对值不超过1,并且左右两个子树都是平衡二叉树。 平衡二叉树的实现方法:红黑树、AVL、替罪羊树、Treap、伸展树等。 2.平衡二叉树左旋转 1)使用 阅读全文
摘要:
二叉排序树 1.二叉排序树的介绍 二叉排序树:BTS(Binary Sort Tree),对于二叉排序树的任何一个非叶子节点,要求左子节点的值小于当前节点的值,右子节点的值大于当前结点的值。如果有相同值,可以将该结点放到左边或右边。 比如:{7,3,10,12,5,1,9} 2.排序二叉树的新增 思 阅读全文
摘要:
霍夫曼树 1.基本介绍 1)给定n个权值作为n个叶子节点,构造一棵二叉树,若该树的带权路径长度(WPL)达到最小,称这样的树为最优二叉树,也称为哈夫曼树。 2)哈夫曼树是带权路径长度最短的树,权值较大的结点离根越近。 2.哈夫曼树几个重要概念和说明 1)路径和路径长度:在一棵树中,从一个结点往下可达 阅读全文