- 博客(24)
- 收藏
- 关注
原创 树-平衡多路查找树
每个节点所包含的关键字个数有上界和下界。用一个被称为【B树的最小度数】的固定整数t>=2来表示这些界。每个节点至多可包含 2t-1 个关键字,至多 2t 个孩子节点。除根节点外每个节点至少包含 t-1 个关键字;节点内有序,任意元素的左子树小于它,右子树大于它。其他节点,[m/2]个分支,[m/2]-1个元素。下限:根节点,2个分支,一个元素。上限:m个子树,m-1个元素。度:结点含有的子结点的个数。阶:结点最多的子结点的个数。所有叶子结点都在同一层。
2024-10-18 18:28:14 150
原创 树-二三四树
二节点 : 一个key和左右两个链接;其中key大于左链接、小于右链接三节点 : - 包含两个key和三个链接(两个key分别称为key1和key2,key1小于key2)1、2、3三个子链接(子链接1的key小于根结点key1、子链接2的key大于根结点key1且小于根结点key2、子链接3的key大于根结点key2)
2024-10-14 20:50:19 165
原创 任务管理功能
一个业务功能的实现可能需要执行多步操作,我们希望给各个步骤解耦,并以任务的形式分派,让用户和运维人员能直观的了解进度。而每个任务又包含了若干的事件,比如创建项目包含 : 创建pv,创建pvc,创建svc,创建cm,创建sts。比如新建一个项目,会拆分成以下任务 : 创建项目>自定义启动>实例标签更新。根据用户意图,创建多个任务,对于一个实例来说,任务是有优先级的。一个任务中的时间是串行的,一个业务的任务也是串行的。
2024-10-14 17:42:32 112
原创 树-平衡二叉树
插入操作:插入新节点后,更新节点高度并检查是否失衡,如果失衡则进行旋转调整。删除操作:与插入类似,删除节点后也需要更新高度并可能进行旋转调整。旋转操作:包括单旋转(左旋和右旋)和双旋转(先左后右或先右后左)。删除》找到目标节点》目标节点左右子节点均不为null。定义节点类:除了存储值外,还需要存储高度信息。
2024-10-12 21:54:36 199
原创 标签管理功能
用户侧创建实例时需要填写对应标签,全部为必填,创建的pod带上标签。value=2时,用户侧占用,运维侧阻塞,但其他用户可以正常运行。redis 分布式锁,key=tag_instance_key。value=1时,运维侧占用,用户侧阻塞。运维侧提供一个标签管理的功能,增删改查。value=0时,无占用,都可以获取。tag_manager 标签表。instance_tag格式。instance 实例表。标签的作用是统计与管理。
2024-10-11 11:55:40 169
原创 动态规划-EditDistance
编辑距离(Edit Distance),也被称为Levenshtein距离,是一种衡量两个字符串之间差异的指标。它定义为通过插入、删除或替换字符这三种操作之一,将一个字符串转换成另一个字符串所需的最少操作次数。编辑距离广泛应用于拼写检查、DNA序列分析、语音识别等多个领域。
2024-10-07 12:11:16 123
原创 LIS-最长递增子串
动态规划是一种通过将复杂问题分解成更小的子问题,并存储这些子问题的解以避免重复计算的方法。对于最长有序子串问题,我们可以定义一个DP数组,其中dp[i]表示以第i个字符结尾的最长有序子串的长度。
2024-09-30 23:09:51 199
原创 LCS-最长公共子序列
LCS 的全称是 Longest Common Subsequence,即 最长公共子序列。它是计算两个序列之间的最长子序列的长度,且该子序列在两个序列中保持相对顺序。
2024-09-30 17:58:04 194
原创 排序-计数排序
数组的索引是从 0 开始的。如果数组中的最大值是 max,那么我们需要一个大小为 max + 1 的计数数组,以便能够使用 max 作为索引。
2024-09-26 18:53:02 113
原创 排序-桶排序
桶排序(Bucket Sort)是一种分布式排序算法,适用于数据均匀分布的情况。它的基本思想是将数据分到有限数量的桶中,然后对每个桶内的数据进行排序,最后再将所有桶中的数据合并起来。
2024-09-26 16:26:12 84
原创 排序-归并排序
时间复杂度:最坏、平均和最好情况下均为 O(nlogn)O(nlogn)。空间复杂度:O(n)O(n),需要额外的空间来存储临时数组。稳定性:归并排序是稳定的,即相等的元素不会改变相对顺序。
2024-09-25 15:49:57 158
原创 排序-冒泡排序
内层循环:比较相邻元素,左大于右,则交换,每次循环都会把[0, length - 1 - i]内的最大元素放到[length - i]上。时间复杂度:最坏和平均情况下为 O(n2)O(n2)。空间复杂度:O(1)O(1),原地排序。稳定性:冒泡排序是稳定的。外层循环:控制遍历次数。
2024-09-25 11:27:04 189
原创 排序-快速排序
左侧排low到partition - 1,右侧排partition + 1到high。遍历结束,交换high和index+1(index+1是比high大的数)以partition返回的partition为准,递归排序其左右两侧。返回index,此时index左边都是比它小的,右边都是比它大的。最后元素high作为基准,从前向后遍历数组[low,high)遇到比high大的,就交换index和i,同时index后移。初始化index=low-1,作为较小侧的交换下标。
2024-09-24 20:46:13 135
原创 java函数式接口
有且仅有一个抽象方法的接口(不包括默认方法、静态方法以及对Object方法的重写),函数式接口不同于以往的普通接口,它最大的作用其实是为了支持。传递,比如传递Lambda、方法引用、函数式接口对应的实例对象等。
2024-09-24 16:53:47 162
原创 Dijkstra 算法
Dijkstra 算法是一种用于计算加权图中单源最短路径的经典算法。它适用于所有边权重为非负的图。该算法通过逐步扩展最短路径树来找到从源节点到所有其他节点的最短路径。
2024-09-23 17:20:06 239
原创 常见算法汇总
Bellman-Ford 算法:用于找到图中从单个源节点到所有其他节点的最短路径,允许负权边。插入排序:构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。快速排序:一种分治算法,通过选择一个“枢轴”元素,将列表分成两部分,分别排序。归并排序:一种分治算法,将列表分成更小的子列表,分别排序后再合并。计数排序:适用于范围有限的整数排序,通过计数出现的次数来排序。子集和问题:找到一个集合的所有子集,使得子集的和等于给定值。并查集:一种数据结构,用于处理不相交集合的合并和查找操作。
2024-09-23 11:37:32 432
原创 DFS 深度优先搜索算法
深度优先搜索(DFS,Depth-First Search)是一种图搜索算法,通常用于遍历或搜索树或图的数据结构。DFS 算法从起始节点开始,沿着一个分支尽可能深入,然后回溯并继续搜索其他分支。DFS 通常使用栈来实现,递归调用也可以看作是隐式使用栈。
2024-09-23 11:27:43 189
原创 BFS 广度优先搜索算法
BFS 算法从根节点开始,首先访问所有相邻节点,然后再访问这些相邻节点的相邻节点,以此类推。使用 while 循环从队列中取出节点,访问该节点的所有相邻节点,并将未访问的相邻节点加入队列。访问该节点的所有未访问的相邻节点,并将这些相邻节点加入队列。Set visited:用于记录已访问的节点,防止重复访问。创建一个集合,用于记录已访问的节点,防止重复访问。Queue queue:用于存储待访问的节点。创建一个队列,并将起始节点加入队列。从队列中取出一个节点,标记为已访问。将起始节点加入队列并标记为已访问。
2024-09-23 10:52:42 164
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人