![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
zab635590867
这个作者很懒,什么都没留下…
展开
-
如何判断单链表有环?
如题,如何判断单链表有环呢?思路一:快慢指针,定义两个指针,同时指向链表头结点。指针移动速度不一样,一个快,一个慢,循环链表时,如果快慢指针相遇,则有环。很好理解,犹如跑道上的两个人,有人跑的快,有人跑的慢,同时起跑,跑的快的人,必然在比跑的慢的多跑一圈后,会追上跑得慢的。思路二:遍历链表,每个元素都往set集合里装,如果有环,肯定会重复,新增元素时判断set是否包含该元素,即可判断链表是否有环:包含则有环,完成遍历,不包含则无环。 两种思路实现...原创 2022-06-12 23:42:51 · 1018 阅读 · 0 评论 -
单链表反转
单链表反转原创 2022-06-12 00:03:16 · 86 阅读 · 0 评论 -
Java链表实现队列
问题:用链表实现一个先进先出的队列分析:1、链表实现,必须有一个节点能够装数据和下一个节点的指针(引用)2、队列必须要有队首、队尾指针和记录当前队列大小的整型数3、入队:往队尾加,队尾的下一个指针指向新元素,随后移动队尾指针指向新元素4、出队:取出队首数据,移动队首指针指向队首的下一个元素5、边界问题考虑实现1、节点类/** * 队列结点 * * @author zab * @date 2021-01-27 11:13 */public class Nod.原创 2021-01-27 11:32:17 · 633 阅读 · 0 评论 -
手撕Java快排
思想从乱序的数字中找一个中位数(便于理解,就取最后一个数),设想两个游标,左游标指向第0个数,右游标指向最后一个数第一步:左游标右移,直到找到一个数比中位数大的停止第二步:右游标左移,直到找到一个数比中位数小的停止第三步:交换左右游标的指向的数,这时候发生一个现象就是小的数在左移,大的数在右移第四步:重复一二三步,直到左右游标指向同一个数。这时候交换中位数和同时指向的数。这时候发生一个现象就是左右游标同时指向的位置,左边全是比该位置对应的数小的数,右边全是比该位置对应的数大的数第五步原创 2021-01-25 23:45:26 · 249 阅读 · 0 评论 -
数据结构与算法——复杂度(上)
数据结构是计算机存储、组织数据的方式。算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。程序员学习数据结构和算法,就是学习操纵数据结构解决问题的方法,就是学习如何更快速度更省空间的解决问题,即学习如何让代码跑的更快,如何让计算机更省存储空间。什么是时间复杂度和空间复...原创 2019-02-27 18:21:31 · 933 阅读 · 0 评论 -
数据结构与算法——复杂度(下)
一个不一样的案例 上一章我们说到了什么是复杂度,怎样计算复杂度。但是之前提到的都是类似于以下案例的:int cal(int n) { int sum = 0; int j = 1; for (int i = 0; i <= n; i++) { sum = sum + i; } return sum; }...原创 2019-04-01 21:56:28 · 784 阅读 · 0 评论 -
数据结构与算法——基础数据结构(数组和链表)
什么是线性表线性表是由零个或多个数据元素组成的有限序列。线性表是有限的 线性表第一个元素无前驱,最后一个元素无后继,中间元素只有一个前驱和后继元素 线性表可以是空表常见的线性表常见的线性表如下图所示常见的线性表数据结构有:数组,链表,队列,栈;与线性表相对的是稍稍复杂的数据结构,比如:树,图等。什么是数组数组是一种线性表,具有连续的内存空间,并且只能存储相同的数据...原创 2019-05-23 22:44:13 · 1177 阅读 · 0 评论