已知三个升序整数数组a[l], b[m]和c[n]。请在三个数组中各找一个元素,是的组成的三元组距离最小。三元组的距离定义是:假设a[i]、b[j]和c[k]是一个三元组,那么距离为:
Distance = max(|a[ I ] – b[ j ]|, |a[ I ] – c[ k ]|, |b[ j ] – c[ k ]|)
请设计一个求最小三元组距离的最优算法,并分析时间复杂度。
要找最小距离,就要找三个元素里面最小的元素,然后移动此元素,为什么呢?
1、如果移动最小元素,距离就可能变得更短
2、如果移动中间元素,距离要么不变要么变长
3、如果移动最大元素,距离只会变长
这样的思路与王道解析的思路实际上是一致的,书上解析的意思是,固定c,找一个a,使得|c-a|
最小,可能书上的表述太过简略和粗糙,难以理解。