链表类-leetcode刷题总结

我一直认为做任何事情,无论是做一个项目, 读一本书,学习某个知识点, 都是需要总结的。 总结意味着对整个过程做一次全面的梳理和反省, 这样才能走得更远。  做完这些总结后,  想忘掉这些知识都很困难。对于leetcode题目, 对于每一类题目做一个总结, 总结的内容主要包括 题目分类, 做题心得, 做题过程中采过的坑

先从题目类型入手

链表元素的调整

此类型最经典的题目就是链表的反转, 61  Rotate List

基于此题目可以做很多变化

相邻的两个元素为一组,对每组做反转,24 Swap Nodes in Pairs

相邻的k个元素为一组,对每组做反转,25 Reverse Nodes in k-Group

对指定连续元素做反转, 92 Reverse Linked List II

此类别相关的题目:

143 Reorder List

86 Partition List, 快速排序的基本思想之一,这里只是要求基于链表实现。 

对于此类题目,基本上都可以用递归来实现, 递归实现非常简单和优雅 递归函数的返回值基本都为链表头 和 链表尾元素(用于链表的连接)

链表合并

链表的合并也是合并排序的基础, 最简单的是2个已排序链表的合并,可以扩展到3个链表的合并和k个链表的合并。k个链表的实现可以基于最小堆实现, 降低时间复杂度。

21 Merge Two Sorted Lists

23 Merge k Sorted Lists

148 Sort List, 这一题可以用归并排序完成, 会用到 Merge Two Sorted Lists



会持续的补充。。。。 

你可能感兴趣的:(链表类-leetcode刷题总结)