2021-07-27 链表中的常见操作

v2-d3468ab920884d00c25afa1be844f124_720w.jpg

在这些题目中,主要用到了哑结点法,双指针法,快慢指针法等等。先将所有题型及其对应的解题技巧总结如下:

哑结点法结合双指针法

使用方法:dumpy + pre + cur. 或 dumpy + p1 + p2

在链表中,涉及到删除节点,需要使用pre来指向被删除节点的前一个节点。又因为头结点可能被删除,而头结点的pre为空。如果只用pre和cur两个指针,则需要讨论pre是否为空这种情况。为了将头结点一般化,在头结点前面,加上一个哑结点,从而可以减少代码中的讨论。使用范围:链表的删除

使用范围:链表的合并

哑结点+特殊位置节点法+首尾链接+断开;

在改变链表结构的题目中,关键是根据题意,找到结构变换后的头结点和尾结点。比如,旋转链表_leetcode 61 一题中,向后旋转n个节点,主要是旋转后的新链表的头结点和尾结点。而旋转后的头结点,是原链表中的倒数第n个节点。旋转后的尾结点为原链表中的倒数第n+1个节点。因此,题目转化为求倒数第n个节点和倒数第n+1个节点。

使用范围:链表的翻转

头插法

在链表翻转的题目中,使用头插法,会很简单。

快慢指针法

快慢指针法,是指在遍历链表的过程中,使用两个指针,快指针是慢指针速度的两倍。这样,当快指针到到尾部是,慢指针为链表中的中点。依据此类方法,可以解决链表中结构中判断的一些问题。

常见遍历 + 哈希表

在复杂链表的存储一题中,使用了HashMap来对复制节点和原节点的信息记录。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容