自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 宽度优先遍历(BFS)—迷宫最短路和八数码(滑动谜题)

因此,利用BFS的原理,此时我们只需要将符合要求每一层的节点(即符合要求的每一步路径走法)依次枚举出来,并且将节点是否是第一次访问到进行标记(即迷宫的该位置是否第一次走到进行标记),当我到达终点时,我们就能得出走出迷宫的最短路径时多少,并且还可以输出对应的路径。根据BFS算法的性质,该过程中,树的每个分支的节点都只对应一种推移交换后的状态,每层的节点数就是符合题目要求的所有状态数,而节点所在层数则是代表到达该状态,所需要推移交换的最少步数。,即可认为状态已经达到图中模拟的最终状态(即满足要求的状态)。

2024-04-01 20:44:05 735

原创 深度优先搜索(DFS)和广度优先搜索(BFS)对比

最短路径问题(如迷宫最短路径,社交网络中两个人的最短联系路径)、连通性问题(确定图的连通性,确定两个节点之间是否存在路径)、树和图的层序遍历、增广路径问题。拓扑排序、迷宫问题(走出迷宫的所有方案)、连通性问题(求连通分量)、回溯问题(八皇后、数独)、组合问题(子集问题或排列问题)、树和图的深度优先遍历。相比于DFS,BFS需要额外的空间来存储同一层的所有节点,特别是在宽度广的图中,这会导致较高的空间复杂度。BFS 从起始节点开始,逐层向外扩展搜索,先访问所有邻近的节点,再逐步访问更远的节点。

2024-04-01 16:37:25 359

原创 算法基础—奶牛玩杂技(贪心算法)

一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度的值,现在称该数值为风险值,风险值越大,这只牛撑不住的可能性越高。只有满足上述公式时,才能保证任意i和i+1位置的奶牛交换后,危险值的最大值降低。时,才需要向下交换位置,从而一步一步实现危险值的最大值的最小情况,否则的话说明堆叠的情况已经是危险值最大值的最小情况了。由此,我们根据贪心思想,首先应该就会想到,如果要所有奶牛的风险值中的最大值尽可能的小。您的任务是确定奶牛的排序,使得所有奶牛的风险值中的最大值尽可能的小。

2024-03-30 00:39:15 915

原创 算法基础——排队打水(贪心算法)

利用前缀和思路解题,如下图所示,图中已经默认1,2,3,4,5…不难看出,某个人的等待接水的时间之和就是他前一个的前缀和数组(即4号的排队的等待时间就是s[3],5号的排队时间就是s[4]),因此,总的所有人的等待时间之和就是s[0]+s[1]+s[2]+s[3]+s[4]。典型的贪心问题,根据我们的直觉判断就是,让装满水时间越短的人排在越靠前面的位置,那么所有人等待的时间之和就会最短!(因为越排前面打水的人,后面等待的人数就越多,即有更多的人需要等待【排前面打水人所用的时间t】,导致等待时间之和增加)。

2024-03-29 02:01:38 1895 2

原创 算法基础—字符串哈希

字符串哈希又称为字符串前缀哈希法,将字符串利用函数f实现不同的字符串映射到不同的整数(哈希值)。函数 f 可以方便地帮我们判断两个字符串是否相等。

2024-03-26 21:52:19 1700 1

原创 算法与数据结构——并查集、种类并查集和带权并查集

并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。并查集的思想是用一个数组表示了整片森林(parent),树的根节点唯一标识了一个集合,我们只要找到了某个元素的的树根,就能确定它在哪个集合里。

2024-03-21 17:18:50 918 1

原创 Redis数据持久化

数据的复制是单向的,只能由主节点到从节点)中,当从节点执行全量复制操作时,主节点会执行 bgsave 命令,并将 RDB 文件发送给从节点,该过程会自动触发 Redis 持久化。RDB 就是 Redis DataBase 的缩写,中文名为快照/内存快照,RDB持久化是把当前进程数据生成快照保存到磁盘上的过程,由于是某一时刻的快照,那么快照中的值要早于或者等于内存中的值。AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

2024-03-19 17:13:44 707 1

原创 gRPC — SSL/TLS单向认证、双向认证、Token认证

传输层安全性协议(Transport Layer Security,缩写作 TLS ),其前身安全套接层(Secure Sockets Layer,缩写作 SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。根据传输层安全协议的规范,客户端与服务端的连接安全应该具备连接是私密的或连接是可靠的一种以上的特性。SSL/TLS 协议通过 X.509 证书的数字文档将网站的公司实体信息绑定到加密密钥,每一个密钥对都有一个私有密钥和一个公有密钥。

2024-03-09 16:28:26 2162 1

原创 gRPC-入门示例

在该文件中,首先需要获取一个获取grpc服务端(被调用方)rpcServer,然后将该rpcServer注册到相应的结构体上,此时通过.proto文件生成的相应代码里的RegisterProductServiceServer()函数进行注册!如下图所示,该函数接收以下参数作为变量!并且接收的参数srv ProductServiceServer,追踪过去(如图所示),可以发现是一个接口,因此我们注册到的结构体应该实现图中所示接口里的方法,才能作为参数传入,将rpcServer映射到相应的结构体上。

2024-03-05 13:59:39 253

原创 算法基础——离散化

离散化:把无限空间中有限的个体映射到有限的空间中去,即使离散的点(差距很大的数值)转换成更加紧密的点,以此提高算法的时空效率。如图所示,例如需要查找值为9对应离散化后的数组下标,则采用二分可以查找到满足某条件下区间的边界点的特性以及离散化数组中已经去重的特性,从而查找到值为9对应的唯一坐标。一般离散化操作是将值域非常大的有限个数,映射到另外的数组中,每个值将与数组的下标具有映射关系,一一对应!2、需要映射或者需要进行操作的值中可能存在重复的,因此需要对涉及的重复的值进行。在此过程中,通常要执行的操作是。

2024-01-21 16:33:40 662

原创 算法基础——二分

但是X左侧满足条件时,值得我们注意的时,由于令l=mid,而c++代码中l+r/2是向下取整的,当区间内只剩l,r两个元素时,此时mid=l,而代码中恰好是满足条件执行,l=mid的代码逻辑,最终刷新的[l,r]的区间相比于上一次将没有发生变化。也就是说,区间并不会继续缩小,最终达不到l==r的二分终止条件,从而陷入死循环。整数二分只要能找到某个条件使得整个区间[l,r]分为一分为二,那么利用二分的特性,通过将区间不断缩小,最终达到二分终止l==r时,就能找的满足条件的区间的边界点,即图中所示的X。

2024-01-20 22:13:39 367

原创 算法基础——位运算

以10为例,10的二进制为1010,右移0位为1010;右移1位为0101,右移2位为0010,右移3位为0001.n & -n 等价于 n & (~n+1) 即源码&补码(源码取反码+1),每次消除n的最右位1,从而计算一个数二进制中1的个数。以下题目是利用二进制位运算的一个实际应用例子,利用。每位上的数字: 01010。因此,可以得到第0位-第3位为分别为0101。假设n的二进制码为1010…即lowbit(n)的二进制码为。

2024-01-20 16:45:58 369

原创 Type cannot implement ‘_xxx‘ as it has a non-exported method and is defined in a different package

Cannot use xxx as the type xxxx Type cannot implement '_xxx' as it has a non-exported method and is defined in a different package原因及解决方案

2023-06-06 16:48:48 539 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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