LeetCode 面试题 最小差
给定两个整数数组a和b,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差
例:
输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8}
输出: 3,即数值对(11, 8)
思路:双指针,分别对两个数组进行排序,然后设定返回值为最大,利用双指针求解
代码:
class Solution{
public:
int smallDifference(vector<int> &a, vector<int> &b) {
sort(a.begin(), a.end());
sort(b.begin(), b.end());
long ret = INT_MAX;
for (int i = 0, j = 0; i < a.size(), j < b.size(); i++, j++) {
ret = min(ret,abs(long(a[i])-long(b[j])));
if (a[i] < b[j]) {
i++;
}
else {
j++;
}
}
return ret;
}
};
时间复杂度:O(n+m) 空间复杂度:O(1)