自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 模拟散列表

模拟散列表是一种通过编程手段实现散列表数据结构的方法,它允许我们进行高效的数据操作,如插入、查询和删除。核心在于设计一个合适的哈希函数,将键(key)映射到一个固定大小的数组索引上,并采用链表法、开放寻址法等策略来解决哈希冲突。在模拟过程中,首先初始化散列表,然后对每个操作,根据哈希函数计算得到槽位,插入或查询数据。散列表的性能依赖于哈希函数的分布均匀性和冲突解决策略的有效性。通过这种方式,散列表能够在大多数情况下提供接近常数时间复杂度的查找和插入性能,适用于处理大量数据的快速访问和存储需求。

2024-04-11 01:08:03 493

原创 堆排序

堆排序是一种高效的比较排序算法,通过构建最大堆或最小堆来组织数据,使得每次堆顶元素为当前堆中的最大或最小值。算法首先创建一个堆,然后将堆顶元素与末尾元素交换并缩小堆的范围,通过不断调整堆结构和交换元素,最终实现序列的有序排列。具有O(n log n)的时间复杂度,且为原地排序,不需要额外空间,适用于大数据集的排序,但在实际应用中可能不如其他快速排序算法高效。

2024-04-10 22:45:47 418

原创 合并集合

合并集合问题涉及使用并查集数据结构来管理多个初始互不相交的集合,并支持两种操作:合并两个集合和查询两个元素是否属于同一集合。通过维护集合的代表元素和利用路径压缩技术,可以高效地处理这些操作,使得合并和查询操作的时间复杂度接近线性。

2024-04-10 22:21:37 402

原创 Trie字符串统计

Trie是一种树形数据结构,适用于字符串的快速查找、插入和删除。它通过将字符串的每个字符映射到树的不同分支来实现高效的前缀共享,优化了字符串集合的操作。Trie的每个节点代表一个字符串的前缀,整棵树存储了所有字符串的集合。插入操作通过沿着树添加字符路径来完成,而查询操作则通过遍历树直到找到完整的字符串。Trie广泛应用于需要频繁处理字符串前缀的场景,如搜索引擎的提示功能和网络路由。

2024-04-10 21:57:27 469

原创 KMP字符串

KMP算法是一种线性时间复杂度的字符串匹配方法,它通过构建模式串的前缀函数来优化搜索过程,避免不必要的回溯,实现在主字符串中快速定位模式串的各个匹配位置。

2024-04-10 00:52:37 500

原创 滑动窗口

滑动窗口算法通过在序列上移动固定大小的窗口来解决一系列问题,如统计、搜索和数据流处理。它通过一次遍历序列,计算并更新窗口内的元素属性,提高了处理效率和减少了资源消耗。

2024-04-08 23:01:31 245

原创 双链表

双链表是一种数据结构,每个节点除了保存指向下一个节点的指针外,还保存指向前一个节点的指针。它支持插入、删除和遍历操作,适用于需要频繁插入和删除的场景。通过双链表,可以方便地进行前向和后向遍历,提高了数据操作的灵活性和效率。

2024-03-10 21:18:48 1016

原创 单链表

单链表是一种常见的数据结构,由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。其特点包括动态性、非连续内存存储和顺序访问。基本操作包括插入、删除、遍历和查找。单链表具有灵活性和动态空间利用的优点,但随机访问性较差,可能占用额外的指针空间。

2024-03-10 20:08:34 969

原创 二进制中1的个数

计算二进制中1的个数的方法有布赖恩·克尼根算法和位运算技巧。布赖恩·克尼根算法通过减去最低位的1并统计操作次数来计算,而位运算技巧如 x & (x - 1) 可以将整数 x 的最右边的1变为0,用来统计1的个数。选择合适的方法可以提高计算效率。

2024-03-10 18:29:12 515

原创 双指针算法

双指针算法是一种有效的问题解决技巧,通过使用两个指针在序列中协同移动,以快速寻找满足特定条件的子序列或子数组。其简单直观的思想、常数级别的空间复杂度以及线性时间复杂度使其在解决数组、链表等问题中表现出色。不同类型的双指针,如快慢指针和左右指针,适用于不同问题,广泛应用于算法竞赛和面试等场景。精通双指针算法有助于提高编程效率和解决实际问题。

2024-03-10 01:21:02 495

原创 一维差分和二维差分

一维差分和二维差分是用于快速计算数组或矩阵区间变化的方法。一维差分通过存储相邻元素的差值来实现对区间的增量更新,而二维差分则通过存储相邻子矩阵的差值来实现对子矩阵的增量更新。这些技巧在需要频繁更新区间或子矩阵值的情况下能够有效提高程序的效率,使得区间和子矩阵的增量更新可以在常数时间内完成。

2024-03-10 00:01:23 580

原创 一维前缀和、二维前缀和

前缀和是一种用于高效计算数组或矩阵区间和的技巧。其中一维前缀和适用于一维数组,通过预先计算每个位置之前的所有元素的和,可以在O(1)时间内求解任意区间的和。而二维前缀和则适用于二维数组,它在预处理阶段计算出每个位置左上方矩形区域的和,进而可以在O(1)时间内求解任意矩形区域的和。这些技巧在需要频繁查询区间和的情况下具有重要的应用价值,能够显著降低查询的时间复杂度,提高程序的运行效率。

2024-03-09 14:22:55 654

原创 二分查找

二分查找是一种基于比较目标值和数组中间元素的值来决定搜索范围的算法。如果当前元素等于目标值,则搜索结束;如果当前元素小于目标值,则在右侧继续搜索;如果当前元素大于目标值,则在左侧继续搜索。

2024-03-08 23:18:56 478

原创 归并排序

归并排序作为一种经典的排序算法,以其简洁而高效的思想而闻名。通过分与治的策略,归并排序将待排序的数据分解成较小的问题,并通过有序合并的方式逐步解决。

2024-03-08 22:51:16 502

原创 面试中小公司

Python中你常用数据类型。Python的深浅拷贝。

2024-03-08 19:08:52 504

原创 快速排序

快速排序是一种高效的排序算法,利用分治思想和递归实现快速排序。通过选择基准值,将数组划分成左右两部分,然后递归地对左右子数组进行排序。

2024-03-08 02:08:23 538

空空如也

空空如也

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

TA关注的人

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