链表
文章平均质量分 79
梳理常见链表题目的思路
戴冠承重
欲戴王冠,必承其重
展开
-
寻找链表的中间节点的方法及应用
本文介绍了一种使用快慢指针寻找单链表中间节点的方法。通过定义两个指针,快指针每次走两步,慢指针每次走一步,当快指针或快指针的下一个节点为空时,慢指针指向的节点即为链表的中间节点。最后,本文进行了时间复杂度和空间复杂度的分析,并总结了快慢指针在链表问题中的应用。原创 2023-07-21 20:43:04 · 71 阅读 · 1 评论 -
链表分割算法-尾插法
本文介绍了一种使用尾插法实现链表分割的算法。通过遍历链表,将小于给定值x的结点尾插到一个新链表中,将大于等于x的结点尾插到另一个新链表中,然后将两个新链表按原始顺序合并起来,最后返回重排后的链表的头结点。该算法的时间复杂度为O(N),空间复杂度为O(1)原创 2023-07-24 21:25:57 · 94 阅读 · 0 评论 -
寻找相交链表的起始节点的双指针方法
本文介绍了一种使用双指针方法来寻找两个单链表相交的起始节点的解决方案。通过定义两个尾指针,遍历找到两个链表的尾结点,并同时计算链表的长度。然后比较尾结点的地址,如果相同则说明链表相交,接下来将长指针先移动差距步,使得两个链表的指针处于相同位置,然后同时遍历两个链表并找到第一个地址相等的节点,该节点即为相交链表的起始节点。如果尾结点的地址不相同,则说明两个链表不相交。该方法的时间复杂度为O(N+M),其中N和M分别是两个链表的结点总数。并且该方法的空间复杂度为O(1)。原创 2023-07-18 08:24:37 · 67 阅读 · 1 评论 -
判断链表是否有环的方法:快慢指针
本文介绍了判断链表是否有环的方法,即快慢指针。通过定义两个指针,一个每次前进一个节点,另一个每次前进两个节点,如果存在环,两个指针最终会相遇。文章提供了代码实现和复杂度分析,并对其细节进行了讨论。该方法的时间复杂度为O(n),空间复杂度为O(1)。通过本文,读者可以了解并应用这一链表环判断方法。原创 2023-07-17 09:20:58 · 214 阅读 · 1 评论 -
环形链表 - 返回入口点
给定一个链表,需要判断链表是否存在环,并找到入环的第一个节点。本文介绍了两种解决方法。方法一是将问题转化为链表相交问题。方法二是使用快慢指针。原创 2023-07-17 21:09:54 · 97 阅读 · 1 评论 -
经典双指针法实现链表中倒数第k个结点的查找
本文介绍了一种通过双指针法查找链表中倒数第k个结点的方法。首先定义两个指针fast和slow,fast指针先移动k步,然后slow和fast指针一起移动,直到fast指针移动到链表末尾,此时slow指针指向倒数第k个结点。文章还对极端情况进行了处理,例如链表为空或者k大于链表长度的情况。最后给出了代码实现和复杂度分析。这种方法的时间复杂度为O(N),空间复杂度为O(1)。原创 2023-07-22 20:54:39 · 46 阅读 · 0 评论 -
判断链表是否为回文结构的前后半段链表算法
算法通过找到链表的中间节点,反转后半段链表,最后比较前半段链表和反转后的后半段链表的节点值是否相等来判断链表是否为回文结构。原创 2023-08-01 21:14:32 · 41 阅读 · 1 评论 -
尾插法删除链表中指定元素的结点
本文介绍了如何删除链表中所有指定元素的结点的方法。通过遍历链表,将不需要删除的结点重新尾插到新链表中,并删除指定元素的结点。最后返回新链表的头结点。原创 2023-07-31 13:52:54 · 58 阅读 · 1 评论 -
经典头插法反转一个单链表
本文介绍了如何使用头插法对单链表进行反转。通过定义一个指针cur指向当前节点和指针rhead保存新头节点的位置,实现了对链表的反转。同时,给出了具体的代码实现和复杂度分析。原创 2023-07-20 07:56:04 · 39 阅读 · 1 评论 -
链表合并算法优化:尾插较小节点的方法
本文介绍了一种优化算法,通过尾插较小的节点,来合并两个升序链表。算法的思路是使用两个指针分别指向两个链表的首节点,然后比较两个指针所指节点的值,将较小的节点逐个进行尾插操作到一个新的链表上。当其中一个链表先尾插结束时,直接将另一个链表剩余的节点进行尾插到新的链表上。该算法的时间复杂度为O(N+M),空间复杂度为O(1)原创 2023-07-21 14:36:25 · 48 阅读 · 1 评论