算法入门:链表做题总结

这几天做链表简单题巩固链表知识。

基本概念

像是反转链表移除链表元素合并有序链表都是对于链表最最基本的操作,不需要有什么深奥的思考过程,主要要关注的只是链表基本功能的实现,注意好整个过程的实现细节,这些都不难。

双指针的使用

在链表简单题中比较有难度的里面双指针常常会用到,因为链表无法直接获得其长度,所以常常用双指针来获得其位置、长度。
移除重复节点中如果不使用缓冲区,便是使用双指针,一个指针读取当下节点值,另一个指针遍历链表去除重复节点;在获得链表倒数第k个节点时,一个指针先读取k次,然后两个指针保持k的距离一起遍历,直到第一个指针读到链表结束。
利用双指针比较复杂一点有对于环形链表的判断,设置快慢指针,在环形链表中运行类似于跑圈一样,快的一定可以追上慢的。当然这道题像我利用set()将节点next()指针添加到集合然后判断是否重合也不是不行。
除此之外,对于链表相交的判断利用双指针也是十分的巧妙,这道题真的告诉我要用双指针我可能也没有思路……

随笔

其实感觉链表相关的题目难度已经上来的,本身是应该抓紧刷题、总结的,但是鉴于现在的目的还是辅助算法、数据结构学习,就不过多做题了。

原文地址:https://www.cnblogs.com/zacharyxue/p/13773244.html