个人技术分享

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)。