最小差,双指针

68 阅读1分钟
// 给定两个整数数组a和b,计算具有最小差绝对值
// 的一对数值(每个数组中取一个值),并返回该对数值的差  
// 输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8}  
// 输出:3,即数值对(11, 8)  
public int smallestDifference(int[] a,int[] b){  
    Arrays.sort(a);  
    Arrays.sort(b);  
    int i=0,j=0;  
    long min=Long.MAX_VALUE;  
    while (i<a.length&&j<b.length){  
        if(a[i]==b[i])return 0;  
        else if(a[i]>b[j]){  
            min=Math.min(min,(long) a[i]-(long) b[j]);  
            j++;  
        }else{  
            min=Math.min(min,(long)b[j]-(long)a[i]);  
            i++;  
        }  
    }  
    return (int)min;  
}