- 博客(25)
- 收藏
- 关注
原创 责任链模式
责任链模式(Chain of Responsibility, COR)是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连。适用于:链条式处理事情。工作流程化、消息处理流程化、事物流程化优点:1。责任的分担。每个类只需要处理自己该处理的工作(不该处理的传递给下一个对象完成),明确各类的责任范围,符合类的最小封装原则。2。可以根据需要自由组合工作流程。如工作流程发生变化,可以通过重新分配对象链便可适应新的工作流程。3。类与类之间可以以松耦合的形式加
2022-06-18 20:00:54
452
2
原创 模板模式(C/C++实现)
模板方法模式( Template Method ),是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。Template Method一般应用在具有以下条件的应用中:...
2022-06-16 18:52:26
292
原创 中介者模式
中介者模式(Mediator)是行为模式之一,在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用。适用于:用一个中介对象,封装一些列对象(同事)的交换,中介者是各个对象不需要显示的相互作用,从而实现了耦合松散,而且可以独立的改变他们之间的交换。优缺点:...
2022-06-14 09:37:55
190
原创 装饰者模式
装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。装饰者模式(Decorator Pattern)动态的给一个对象添加一些额外的职责。就增加功能来说,此模式比生成子类更为灵活。侧重于功能的拓展。...
2022-06-12 21:59:40
133
1
原创 桥接模式(C+/C++实现)
桥接模式(Bridge模式),是结构型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。桥接模式(Bridge Pattern)是将抽象部分与实现部分分离(解耦合),使它们都可以独立的变化。Client:Bridge模式的使用者Abstraction:抽象类接口(接口或抽象类)维护对行为实现(Im
2022-06-11 11:55:55
441
1
原创 适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的实体之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立实体的功能。这种模式涉及到一个单一的Adapter类,该类负责加入独立的或不兼容的接口功能。适用于:是将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。侧重于两个不相容的类的适配。...
2022-06-09 21:16:21
120
原创 代理模式(C/C++)
代理模式 Proxy Pattern 是程序设计中的一种设计模式。代理模式 (Proxy模式 ),是结构型设计模式之一,它可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。Subject(抽象主题角色):真实角色与代理角色的共同接口。RealSubject(真实主题角色):定义了代理角色所代表的真实对象。Proxy(代理主题角色):
2022-06-08 19:41:21
214
2
原创 并查集-进阶题目
并查集-进阶题目文章目录并查集-进阶题目一、食物链题目描述思路分析详细代码二、 A Bug's Life题目描述思路分析详细代码三、 Find them, Catch them题目描述思路分析详细代码一、食物链POJ-1182题目描述动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X
2022-03-06 12:26:41
220
4
原创 并查集——基础
并查集文章目录并查集并查集模板例题POJ-2236 Wireless Network题目描述思路分析详细代码POJ-1611 The Suspects题目描述思路分析详细代码并查集并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(union-find algorithm)定义了两个用于此数据结构的操作:Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。Union:将两个子集合并成同一个集合。模板vo
2022-02-28 11:04:50
266
2
原创 最小生成树-Kruskal
最小生成树-Kruskal文章目录最小生成树-KruskalKruskal算法流程模板例题POJ-1251 Jungle Roads题目描述思路分析详细代码POJ-1287 Networking题目描述思路分析详细代码POJ-2377 Bad Cowtractors题目描述思路分析详细代码KruskalKruskal算法是求加权连通图的最小生成树的算法。算法用到了贪心的思想,即将边按照权值由小到大排序,若这条边的两个端点不属于同一个集合则合并到一个集合,若属于同一个集合即形成了环,则跳过这条边,
2022-02-21 18:21:29
419
2
原创 最小生成树-Prime
最小生成树-Prime文章目录最小生成树-PrimePrime算法思想模板例题POJ-1287 Networking题目描述思路分析详细代码POJ-2031 Building a Space Station题目描述思路分析详细代码PrimePrime算法,其实就是加点。Prime算法先将起点加入到最小生成树上,之后不断寻找与最小生成树相连的边权最小所连接的点,并将该点加入到最小生成树中。最小生成树总共有n-1条边。因为是加点,因此Prime算法适用于点少而边多的图。算法思想取图中任意一个顶点
2022-02-15 21:10:12
199
3
原创 最短路-Floyd
最短路-Floyd文章目录最短路-FloydFloyd模板例题POJ-3259 Wormholes题目描述思路分析详细代码POJ-3660 Cow Contest题目描述思路分析详细代码FloydFloyd是多源最短路径算法,算法的主要思想是动态规划,通过插入点不断进行更新松弛,即f [i] [j]=min(f[i] [j],f [i] [k]+f [k] [j]),时间复杂度 O(n3)。模板void floyd(){ for(int k=1;k<=n;k++){ for(in
2022-02-07 15:40:31
148
2
原创 最短路-SPFA
最短路-SPFA文章目录最短路-SPFASPFA算法描述模板例题POJ-3259 Wormholes题目描述思路分析详细代码POJ-1860 Currency Exchange题目描述思路分析详细代码POJ-1062 昂贵的聘礼题目描述思路分析详细代码SPFASPFA算法是基于Bellman-Ford队列优化的算法,通常处理求含负边权的单源最短路径的算法,可以用于判断是否有负权环,最坏时间复杂度O(VE)。算法描述初始化dist数组,除起点s以外的点的距离初始化为INF,dist[s]=0
2022-02-01 20:31:33
310
2
原创 最短路——Dijkstra
最短路——Dijkstra文章目录最短路——DijkstraDijkstra算法描述模板1.基于邻接表的Dijkstra2.优先队列优化的Dijkstra例题POJ-2387[POJ2387 Til the Cows Come Home ](https://vjudge.csgrandeur.cn/problem/POJ-2387)题目描述具体代码POJ-3159[POJ-3159 Candies ]https://vjudge.csgrandeur.cn/problem/POJ-3159)题目描述具体代
2022-01-30 14:43:42
1093
1
原创 [解题报告]《算法零基础100讲》(第8讲) 素数筛选
文章目录一、质数排列题目描述思路分析具体代码二、计数质数题目描述思路分析具体代码一、质数排列力扣:1175.质数排列 题目描述请你帮忙给从 1 到 n 的数设计排列方案,使得所有的「质数」都应该被放在「质数索引」(索引从 1 开始)上;你需要返回可能的方案总数。让我们一起来回顾一下「质数」:质数一定是大于 1 的,并且不能用两个小于它的正整数的乘积来表示。由于答案可能会很大,所以请你返回答案 模 mod 10^9 + 7 之后的结果即可。思路分析Eratosthenes筛选法,筛选出小
2022-01-01 11:00:49
186
6
原创 [解题报告]《算法零基础100讲》(第7讲) 素数判定
文章目录一、回文素数题目描述思路分析具体代码二、丑数题目描述思路分析具体代码一、回文素数力扣:866.回文素数 题目描述求出大于或等于 N 的最小回文素数。回顾一下,如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是素数。例如,2,3,5,7,11 以及 13 是素数。回顾一下,如果一个数从左往右读与从右往左读是一样的,那么这个数是回文数。例如,12321 是回文数。思路分析从n开始分别判断n是否是回文素数,同时注意不存在长度为8的素数,直接跳过即可。具体代码cla
2021-12-26 16:59:26
596
6
原创 [解题报告]《算法零基础100讲》(第6讲) 日期算法
文章目录一、一周中的第几天题目描述思路分析具体代码二、一年中的第几天题目描述思路分析具体代码三、日期之间间隔几天题目描述思路分析具体代码一、一周中的第几天力扣:1185.一周中的第几天题目描述给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。输入为三个整数:day、month 和 year,分别表示日、月、年。您返回的结果必须是这几个值中的一个 {“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Sa
2021-12-23 15:12:52
170
6
原创 [解题报告]《算法零基础100讲》(第5讲) 计数法
文章目录一、 唯一元素的和题目描述思路分析具体代码二、字符串中的第一个唯一字符题目描述思路分析具体代码三、[检查是否所有字符出现次数相同]题目描述思路分析具体代码四、找到所有数组中消失的数字题目描述思路分析五、好数对的数目题目描述思路分析具体代码六、大餐计数题目描述思路分析具体代码一、 唯一元素的和力扣:1748. 唯一元素的和题目描述给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。请你返回 nums 中唯一元素的 和 。思路分析根据数据范围,可以用cnt数组
2021-12-21 21:56:00
695
5
原创 [解题报告]《算法零基础100讲》(第4讲) 组合数
文章目录一、 杨辉三角题目描述思路分析具体代码二、杨辉三角II题目描述思路分析具体代码一、 杨辉三角力扣:118. 杨辉三角题目描述给定一个非负整数 *numRows,*生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。思路分析递推公式:a [i] [j]=a [i-1] [j-1]+ a[i-1] [j]; 特别地若j=0 或者 i=j a[i] [j]=1;具体代码class Solution {public: vecto
2021-12-19 20:35:52
263
3
原创 [解题报告]《算法零基础100讲》(第3讲) 矩阵
文章目录一、 最富有客户的资产总量题目描述思路分析具体代码二、二进制矩阵中的特殊位置题目描述思路分析具体代码三、翻转图像题目描述思路分析具体代码四、旋转图像题目描述思路分析具体代码五、转置矩阵题目描述思路分析具体代码六、将一维数组转变二维数组题目描述思路分析具体代码一、 最富有客户的资产总量力扣:1672. 最富有客户的资产总量题目描述给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资
2021-12-15 22:42:09
268
9
原创 [解题报告]《算法零基础100讲》(第2讲) 数列
文章目录一、斐波那契数题目描述思路分析具体代码二、第N个泰波那契数题目描述思路分析具体代码三、求1+2+3+...+n题目描述思路分析具体代码四、单调数列题目描述思路分析具体代码五、和为s的连续正数序列题目描述思路分析具体代码六、连续整数求和题目描述思路分析具体代码一、斐波那契数力扣:509. 斐波那契数题目描述斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。思路分析f(0)=0,f(1)=1f(n)=
2021-12-11 20:41:10
669
8
原创 [解题报告]《算法零基础100讲》(第48讲) 位运算 (左移)
文章目录一、数字的补数 题目描述思路分析具体代码二、比特位计数题目描述思路分析具体代码一、数字的补数 题目描述力扣:476数字的补数对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。例如,整数 5 的二进制表示是 “101” ,取反后得到 “010” ,再转回十进制表示得到补数 2 。给你一个整数 num ,输出它的补数。思路分析取反可通过位异或1来做到,因此构造mask与num异或即可。具体代码class Solu
2021-12-07 19:08:46
266
5
原创 [解题报告]《算法零基础100讲》(第32讲) 多维枚举(二) - 进阶
零、写在前面刷题刷题刷题一、题解leetcode 1566. 重复至少K次且长度为M的模式题目描述给你一个正整数数组 arr,请你找出一个长度为 m 且在数组中至少重复 k 次的模式。模式 是由一个或多个值组成的子数组(连续的子序列),连续 重复多次但 不重叠 。 模式由其长度和重复次数定义。如果数组中存在至少重复 k 次且长度为 m 的模式,则返回 true ,否则返回 false 。思路分析题目要求找出长度为m 且在数组中至少重复 k 次的模式,题目是要求连续的,所以就转化成在arr
2021-11-21 21:30:17
843
6
原创 我的杯子终于也到了~~
第一次收到官方的礼物。跟着我英雄哥拿的杯子。https://blog.csdn.net/WhereIsHeroFrom?spm=1001.2014.3001.5512
2021-11-20 16:19:59
272
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人