链表

100 阅读1分钟

链表

特点

  1. 由无数个节点(value+next)组成,在内存中不连续
  2. 在新增和删除上效率更高
  3. 在查询时效率不如数组

实现

链表增删改操作实现过程中最基础的思想是:双指针

操作

合并多个排序过的链表一般可以用,最小堆或者分治算法

最小堆:比较同一位置的两个节点,取出最小的,再将指针后移

分治:将k个链表拆分成每一对,比较同一位置的两个节点,进行交换。

注意,在拆分k个链表的数组时,mid=(low+high)/2 这种写法是有问题的。因为如果 low 和 high 比较大的话,两者之和就有可能会溢出。改进的方法是将 mid 的计算方式写成 low+(high-low)/2。更进一步,如果要将性能优化到极致的话,我们可以将这里的除以 2 操作转化成位运算 low+((high-low)>>1)。因为相比除法运算来说,计算机处理位运算要快得多。