算法分析
-
假设只有两个数列,那么先把第一个数列排序,再把数列变成n * n
a1+b1 a2+b1 …an+b1
a1+b2 a2+b2 …an+b2
......
a1+bn a2+bn …an+bn -
那么上式中每一行都是单调递增的,那么最小值一定是第一列中最小值,那么当把最小值去掉的时候,下一个最小值就是第一列剩下的最小值和当前去掉的最小值那一行的次小值。
- 对于这种维护最小值的数据结构可以用小根堆来维护。
- 对与每两个数列需要进行mlogn次 一共需要进行(m-1)次数列 总的时间为m*mlogn