Leetcode链表部分题目常用方法技巧总结

来源:互联网 发布:美工学徒主要做什么 编辑:程序博客网 时间:2024/06/03 15:36

前面两三周刷完了链表的题目,这里总结一下解链表的题目时常用的一些方法技巧和解题思路应该如何去考虑。先来总结一下常见的题型:

  • 删除类型(删除指定节点、重复元素、环、指定值的节点)
  • 合并排序链表
  • 插入节点
  • 反转链表(kGroup、Between)
  • 排序链表(归并,快拍,插入排序)
  • 对链表进行拆分(奇偶分开、以某个参考值分区)

其实主要还是对链表数据结构的基本操作,还有一些其他题目也可以最后归结到这些基本操作上面,接下来再看一看链表题目中常用的一些解题的技巧:

  • slow,fst双指针,因为链表无法得知长度,所以尝试用这种方法来达到某种效果(长度、检测环等)
  • 对于涉及链表长度的问题,往往会通过两个指针进行几何变换来得到想要的差额==要好好画图理解思考
  • 使用一些临时变量来存储next指针,以完成插入删除等操作
  • 对于插入和删除等操作,往往需要一个额外的指针来记录其前面的节点,再编程之前好好思考其间关系效果会比较好
  • 对一些依赖于后面节点才可以完成的操作,使用递归的方式来解决
  • 对于有些题目提前使用循环获得其链表的长度也是一种有效的方法
  • 对于要考虑最后几个节点的操作,有事可以再遍历之前先将头指针向后移动k个节点
  • 插入、删除操作往往需要使用目标节点前面的节点,所以往往会定义一个新的链表节点其next指针指向head节点

上面说的可能会比较晦涩,不太好理解,但是相信如果刷完了链表的题目再来看还是会有一个共鸣的。这里不再贴代码来进行解释,可以参考下面几个链接,感觉总结得还可以
http://blog.csdn.net/why_still_confused/article/details/51333257
http://blog.csdn.net/cqkxboy168/article/details/40464351
http://blog.csdn.net/KusanoNEU/article/details/72758159

原创粉丝点击