数据结构与算法
文章平均质量分 73
数据结构及算法的相关内容
星眺北海
既然意识到自己的渺小,就更应该变得强大
个人博客 www.xtbh.website
展开
-
【数据结构与算法】深入理解归并排序(Merge Sort)
归并排序是一种经典且强大的排序算法,通过分治策略和递归实现,能够在各种情况下提供稳定的性能表现。尽管它在空间使用上存在不足,但其稳定性和适应大规模数据的能力使其在许多应用场景中占据重要地位。原创 2024-08-28 11:07:15 · 1143 阅读 · 0 评论 -
【数据结构与算法】从左到右快速幂和从右到左快速幂
从左到右快速幂和从右到左快速幂算法通过将幂次的二进制表示与逐步的平方、乘法操作结合起来,实现了高效的幂运算。无论是从左到右还是从右到左的实现,都大大减少了计算所需的时间,特别是在需要处理大数幂运算的场景下。掌握这种算法,对提升计算效率具有重要意义。原创 2024-08-27 09:49:40 · 723 阅读 · 0 评论 -
【数据结构与算法】使用哈夫曼编码压缩文本
但是我们可以用位来存储,根据不同的字符集,原本一个字符需要7位,8位,16,位甚至32位,现在可以降低出现频率更高的字符的编码长度,那么反映在需要压缩的文本中,压缩比就很可观了。哈夫曼编码不但能够应用于文本数据的压缩,还能够拓展至其他类型的数据压缩领域,例如图像、音频以及视频文件,其核心在于用更短的编码映射原本出现频率高但编码长度大的数据,例如用8bit表示一个像素,我们可以把出现最频繁的压缩为4bit、3bit甚至更低。'也是频率为1的,随便找个最小的连上就行。现在剩下的节点权重为2,3,3,4。原创 2024-08-26 08:59:27 · 1057 阅读 · 0 评论 -
【数据结构与算法】理解二叉搜索树(BST)
本文深入探讨了二叉搜索树(BST)这一重要的数据结构。详细介绍了 BST 的定义及特性,包括节点值的大小关系和子树的性质。阐述了其重要性质及优势,如高效的查找、快速的插入和删除操作,并说明了不同情况下的操作方式。通过示例展示了 BST 的插入和删除过程,还指出了性能退化这一关键问题,分析了其原因如有序插入或删除、极端数据分布等,并通过举例加以说明。原创 2024-08-15 11:15:02 · 1297 阅读 · 1 评论 -
leetcode787. K 站中转内最便宜的航班——优先队列优化的Dijkstra算法+剪枝
继续思考,发现dijkstra算法找到的是最优路径,但是其中转节点可能很多,而真正的路径只可能在中转节点比最优路径少的路径里,其他中转节点多于最优路径的路径完全可以剪枝,因为他们的费用不可能更低。按照这个思路,只需要维护一个每个节点的最小中转数,任何多于最小中转数的路径都可以剪枝,因为对于每一个被剪枝的路径来说,在其之前都已经有至少一条路径价格比它低的同时中转数还要小于它。对于k的限制,我想到可以在优先队列中维护一个当前层级的变量,当到达的层级大于k时,就不再扩展了。k:最多经过的中转站数。原创 2024-08-08 17:37:33 · 502 阅读 · 0 评论 -
Python内置装饰器:@lru_cache 和 @cache【leetcode808. 分汤】
和 是Python标准库中提供的两种缓存装饰器,它们可以将函数计算的结果缓存起来,下次调用的时候直接返回结果 装饰器位于 模块中,它使用最近最少使用(LRU)算法来缓存函数调用的结果。当你使用这个装饰器时,函数的调用结果将根据参数被缓存起来。如果再次出现相同的参数,函数将直接从缓存中获取结果,而不是重新执行,从而提高效率。在上面的例子中, 是一个计算密集型的函数,我们使用 来缓存它的结果。 参数指定了缓存中可以存储的最大调用次数。如果没有设置 或者设置为 ,则缓存不会自动清除,但可能会消耗大量内存原创 2024-04-02 21:31:18 · 1562 阅读 · 0 评论 -
python内置乘方运算溢出错误
在写快速幂的底数平方时,我最开始使用了内置的乘方运算符。会自动适应运算结果,处理溢出。运算符不会自动处理溢出,而。)时,遇到了一个小问题。但是在提交的时候报错。原创 2024-03-25 13:03:11 · 250 阅读 · 0 评论 -
可视化排序算法
本质上是做的一个可视化工具包,按照functional.py的格式可以自己写其他的无额外空间的算法。原创 2023-07-13 21:25:34 · 73 阅读 · 1 评论 -
DFS和BFS学习笔记
虽然都找到了正确的路径,但是具体的路线却不同,在解决迷宫问题时,我们往往是要找到最短路径,所以我们应该优先使用BFS算法。dfs在搜索时会遍历每一条路径,所以通常用来计算从起点到终点的路径数量,即在搜索过程中,一旦到达终点就把路径计数加一。dfs指的是深度优先搜索,即从起始点开始,沿着某一条路径一直向前搜索,没有后继节点时,回溯到。bfs是按照从近到远搜索的,所以如果找到终点,则一定为从起点到终点的最短路径,注意,只适用于。此外,可以维护一个pre数组,用于记录某点的前驱,从而可以得到完整的路径。原创 2023-03-18 22:33:37 · 163 阅读 · 0 评论