
这篇文章来讲链表相关的算法题由于博主太懒了题做了之后就一直没写博客所以更新的时间间隔得比较久,请各位见谅由于是与链表相关的算法题所以希望有一点链表的基础再来看这篇文章效果可以会比较好1.两数相加题目来源2. 两数相加 - 力扣LeetCode这道题因为两个链表本身就是逆序进行存放的所以相比于按照原顺序存放的链表会更好写不然就要考虑把链表逆序之类的在计算每一位的和时要考虑到是否会进行进位所以需要设置一个sign变量来记录是否会进位而且这道题比较阴的地方是两个链表的长度还可能是不一样的有可能一个链表遍历完了另一个链表还有节点没有遍历到所以我们在循环条件的控制上需要多加考虑具体代码如下2.两两交换链表中的节点题目来源24. 两两交换链表中的节点 - 力扣LeetCode这道题题目的意思很好理解要求交换链表中相邻的节点假如要交换两个节点我们需要考虑的公有四个节点因此需要定义四个指针变量来进行操作又因为头结点并没有前置节点为了方便保持统一性我们可以设置哨兵位节点用图来分析思路会比较清楚因为我们定义了多个指针所以在改变指针指向的过程中并不需要过多考虑改变的顺序因为指针的位置并不会丢失具体代码如下3.重排链表题目来源143. 重排链表 - 力扣LeetCode这道题可以拆分为三个算法题逆序合并两个链表寻找中间节点都是我们之前学过的并且这道题的合并两个链表并不需要考虑节点中的值只需要按顺序合并就够了具体代码如下4.合并K个升序链表题目来源23. 合并 K 个升序链表 - 力扣LeetCode我们在数据结构的学习时有做到合并两个有序链表那个题这道题与那个题是类似的合并两个有序链表是从两个链表的节点中取较小的那个插入到新链表中这道题是从多个链表的节点里取较小的那个为了达到这个效果我们可以使用堆来辅助建一个小堆来获得链表节点数值最小的那个节点因为优先级队列建堆默认建的是大堆所以我们需要额外写一个仿函数来建小堆具体代码如下其实这道题还有别的解法可以先合并前两个链表合并完的新的链表再跟下一个链表合并在这里就不实现这种解法了5.k个一组翻转链表题目来源25. K 个一组翻转链表 - 力扣LeetCode要解决这道题我们要先算出一共要翻转多少组所以我们需要先把count给算出来然后就一组头插到新链表中每次的头指针要往后走k次才能够到下一组头插完之后需要将不用翻转的元素尾插到链表中代码如下以上就是本篇文章的全部内容了如果对你有帮助可以点个赞支持一下感谢各位的观看TA 关注的仓库 - 陌染青云 (mo-ran-qingyun) - Gitee.com这是我个人的gitee 仓库,账号上文章的代码都会发到仓库里有兴趣可以看一下