1)算法基本设计思想:
2)c语言描述:
#define INT_MAX 0X7FFFFFFF
int abs_(int a) {//绝对值
if(a<0) return -a;
else return a;
}
bool min(int a,int b,int c){
if(a<=b&&a<=c) return true;
else return false;
}
int findminoftrip(int A[],int n,int B[],int m,int C[],int p){
int i=0,j=0,k=0,D_min=INT_MAX,D;
while(i<n&&j<m&&k<p&&D_min>0){
D=abs_(A[i]-B[j])+abs_(B[j]-C[k])+abs_(C[k]-A[i]);
if(D<D_min) D_min=D;
if(min(A[i],B[j],C[k])) i++;
else if(min(B[j],C[k],A[i])) j++;
else k++;
}
return D_min;
}
3)时间复杂度和三元组的元素个数有关,因为要依次遍历里面的元素
n=(|S1|+|S2|+|S3|),时间复杂度为O(n),空间复杂度为O(1)。