
算法学习
文章平均质量分 89
多加点辣也没关系
一个普通的程序猿
展开
-
数据结构与算法|线性结构
线性表(Linear List):是具有相同数据类型的n个元素的有序集合。a0a1aiai1an−1a0a1...aiai1...an−1表中的元素个数 n 称为表的长度,n=0 是称为空表当1in1 < i原创 2024-02-26 23:24:53 · 1078 阅读 · 0 评论 -
Java-布隆过滤器的实现
如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路,但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢 (O(n)O(logn)不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构。它可以通过一个Hash函数将一个元素映射成一个位阵列(Bit array)中的一个点。这样一来,我们只要看看这个点是不是1就可以知道集合中有没有它了。于是乎,布隆过滤器便应运而生了。原创 2024-01-10 22:21:20 · 1499 阅读 · 0 评论 -
Java-红黑树的实现
数据结构可视化-红黑树因为红黑树中有变色左旋右旋等变化,不是很容易理解,如果能自己对红黑树进行操作,那么这些概念上的东西相对而言就好接受一点了。红黑树是一种自平衡二叉查找树,和AVL 树类似,都是在进行插入和删除时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。红黑树虽然复杂,但它的最坏情况运行时间仍非常好,并且在实践中效率很高,它可以在O(logn)实践内进行查找、插入和删除操作,其性能要优于AVL 树。(1)其节点要么是红色,要么是黑色(2)根节点是黑色的(3)每个叶子节点都是黑色的。原创 2023-04-12 00:14:45 · 1451 阅读 · 2 评论 -
Java-双向链表的实现
双向链表也称为双链表,是链表的一种,它的每个数据节点都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个节点开始,都可以很方便地访问它的前驱节点和后继节点。可以使用一个head和tail分别指向头部和尾部的节点每个节点由三部分组成:前一个节点的指针prev保存的元素data后一个节点的指针next双向链表的第一个节点的 pre 是 null双向链表的最后一个节点的 next 是 null双向链表在进行增加和删除元素的时候,只需要改变prev和next的指向即可完成相关的操作。原创 2023-04-03 01:18:23 · 1195 阅读 · 0 评论 -
算法题:求数组中连续和最大的值
求数组中连续和最大的值,例如数组:方式一:计算出所有可能的情况,留下最大值实现思路:将数组拆分出所有可能的子列,使用三层循环的方式去求每一个子列中连续和的值,第一层循环确定子列起始的位置【i】,第二层确定子列终止的位置【j】,第三层循环就是计算子列【i ~ j】的和,如果当前子列和大于之前的子列和,则更新最大值。这个算法的复杂度是 ,因为有三层嵌套的 for 循环,如果每一层循环都是从 0~N ,那么乘起来就是 N 的三次方方式二:方式一使用三层嵌套循环求每一个子列的和,其实第三个 for 循环可以去原创 2022-06-10 11:14:01 · 1496 阅读 · 0 评论 -
数据结构与算法|绪论
文章目录前言一、数据结构1. 什么是数据结构二、算法1. 什么是算法2. 什么是好的算法2.读入数据总结前言为什么要学习数据结构与算法?对于大部分的业务开发者来说,平常我们基本上都是利用现成已经封装好的接口,或者类库,加上一堆的业务逻辑来实现需求功能,很少会注意到数据结构与算法,比如说你用一个类库,你不懂得时间、空间复杂度的分析,写业务逻辑时什么时候用 AarryList 什么时候用 LinkedList,怎么让代码变得更加高效,为什么哪些很牛逼的框架能在高并发的情况下还能保持如此高的效率?学习数据原创 2022-03-09 00:14:33 · 686 阅读 · 0 评论