先排序,然后应用双指针逼近。代码很简单,重要的是需要拥有这种算法的思想。
class Solution {
public:
int smallestDifference(vector<int>& a, vector<int>& b) {
sort(a.begin(),a.end());
sort(b.begin(),b.end());
int i=0;
int j=0;
long long ans = 2147483647;
while(i<a.size()&&j<b.size())
{
if(a[i]==b[j])
return 0;
if(a[i]>b[j])
{
ans = min(ans,((long long)a[i]-(long long)b[j]));
j++;
}
else{
ans = min(ans,((long long)b[j]-(long long)a[i]));
i++;
}
}
return ans;
}
};