链表
文章平均质量分 75
链表相关算法题解
星河&'
奔跑的小菜鸟
展开
-
回文链表判断
通过一个寻找链表中点的函数,如果为偶数个结点,则返回中间两个的前一个结点,如果为奇数个结点,则返回中间节点,再通过一个反转链表的函数,将中间节点后面的链表翻转,建立两个指针,一个给链表的头,一个给中间结点的下一个,同时从两个指针遍历,判断结点是否相同。原创 2023-08-07 15:25:11 · 42 阅读 · 0 评论 -
单链表的逆置(反转)
定义 n3 是为了迭代时 n2 能找到下一个的位置如下图所示。如下图中将 1 为头节点的链表变为 6 为头节点的链表。当 n2 为空时算法结束可返回 n1 为新链表的头。取下原链表的每个节点都进行头插到新链表。将一个单链表的头与尾交换方向。但是有两处重要的出错点。原创 2023-09-18 12:15:44 · 607 阅读 · 0 评论 -
单向环形链表
通过快慢指针的方式解决问题(fast and slow)slow 走一步,fast 走两步,判断是否相遇原创 2023-08-02 17:22:56 · 143 阅读 · 1 评论 -
复制带随机指针的链表
给一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。通过遍历链表,复制每一个节点并插入当前结点与下一节点之间。将复制节点解下来,生成一个新链表,并恢复原链表链接关系,根据原节点的random,处理复制节点的random。下面是一种时间复杂度较小的解法,仅为O(N)返回这个链表的深拷贝。原创 2023-08-09 16:24:07 · 75 阅读 · 0 评论