java实现顺序表 顺序表的概念:顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为 2021-04-27 847 0 java 总结 数据结构
【力扣】环路检测 本文介绍了如何检测链表中的环,并找到环的起始节点。文章提供了两种方法:第一种是使用集合(Set)存储遍历过的节点,当遇到重复节点时即为环的入口;第二种方法利用快慢指针技巧,通过让两个指针以不同速度移动来检测环的存在。当快慢指针相遇时,再引入一个从头开始的新指针与慢指针同步移动,直到两者再次相遇,此时相遇点即为环的起点。这种方法不需要额外空间,更加高效。代码示例展示了这两种解决方案的具体实现。 2021-04-26 971 0 java 总结 数据结构 力扣
【力扣】链表相交 题目:给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5 2021-04-25 958 0 java 总结 数据结构 力扣
【力扣】回文链表 该文章介绍了两种方法来判断一个链表是否为回文结构。第一种方法是将链表中的所有元素复制到数组中,然后使用双指针技术从两端向中间移动并比较元素值,时间复杂度为O(n),空间复杂度为O(n)。第二种方法则是先找到链表的中点,反转后半部分链表,之后再逐个比较前半部分与反转后的后半部分节点值,以确定整个链表是否构成回文。这种方法在保持O(n)时间复杂度的同时,仅需O(1)的空间复杂度。通过这两种不同的方式,可以有效解决检查链表是否为回文的问题。 2021-04-24 935 0 java 问题 数据结构 力扣
【力扣】链表求和 题目:给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。 2021-04-22 1182 0 java 总结 数据结构 力扣
【力扣】分割链表 该题目要求编写一个程序,以给定值x为基准分割链表,确保所有小于x的节点位于大于或等于x的节点之前。解题思路是遍历原始链表,将小于x的节点添加到一个小链表中,大于等于x的节点则加入另一个大链表。最后,将这两个链表连接起来形成新的有序链表。具体实现时,通过创建两个虚拟头节点来分别管理小链表和大链表,在完成对原链表的遍历后,将大链表接在小链表之后,并返回合并后的链表头部。这样就完成了链表的重新排序。 2021-04-21 942 0 java 总结 数据结构 力扣
【力扣】删除中间节点 题目:实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。示例:输入:单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->f来源:力扣(LeetCo 2021-04-19 880 0 java 问题 数据结构 力扣
链表:双向链表,循环链表概念及其对比 本文介绍了双向链表和循环链表的概念、设计及基本操作。双向链表在单链表的基础上增加了前驱指针,使得每个节点可以方便地访问其前后节点,提高了数据搜索效率。双向链表的插入和删除操作需调整新节点及其前后节点的指针指向。循环链表则通过将尾节点指向头节点形成闭环,分为单向和双向两种类型。单循环链表允许从任一节点出发访问所有节点,而双循环链表支持双向访问。文章还对比了单链表、双链表与循环链表的特点,在存储密度、插入删除灵活性等方面进行了分析。 2021-04-16 972 0 java 总结 数据结构
【力扣】移除重复节点 编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1, 2, 3, 3, 2, 1]输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。来源:力扣(LeetC 2021-04-16 958 0 java 总结 问题 数据结构