第一题 19. Remove Nth Node From End of List
题目描述
移除链表从后往前数的第nth个ListNode
算法
如果想要在O(n)的情况下完成,那么我们需要利用两个Pointer,这两个Pointer指示的是第一个和第二个的距离。之后同时移动两个Pointer,当一个到达尾端的时候,那么另一个指示的位置即我们想要删除的位置
|
|
第二题 21. Merge Two Sorted Lists
题目描述
合并两个排序过的List
算法
Iterative
|
|
Recursive
|
|
第三题 23. Merge k Sorted Lists
题目描述
合并k个排序过的list
算法
利用回溯 和 Divide and Conquer 进行两两合并,知道获得最后答案
|
|
另一种方法可以用Priority Queue解决这个问题
第四题 24. Swap Nodes in Pairs
题目描述
交换list中相邻两个Node的位置
算法
|
|
第五题 25. Reverse Nodes in k-Group
题目描述
在一个LinekedList中,将每隔k个中的所有Node反转位置
算法
我们需要记录下要交换的尾位置的下一个Node,并通过这个Node, 挨个将LinkedList中的Node进行交换位置
|
|
第六题 61. Rotate List
题目描述
将LinkedList在第从右数第k个位置旋转
算法
用一个Fast指针和一个Slow指针获得距离结尾的位置
|
|
第七题 83. Remove Duplicates from Sorted List
题目描述
移除LinkedList中重复的数字
算法
Iterateive
|
|
Recursive
|
|
第八题 82. Remove Duplicates from Sorted List II
题目描述
将值相同的节点移除出List
算法
利用一个前序节点,记录下之前的值
在每次循环开始的时候,先清理重复的值。如果没有重复的,那么直接向后移动一位,如果有则将pre的next设为新的。
|
|
第九题 86. Partition List
题目描述
将小于x的部分提到前面,其余的按顺序不变的接起来
算法
利用两个节点,将之后的依依尾随起来
|
|