0%

面试题 16.06. 最小差

面试题 16.06. 最小差

我菜炸了

双指针
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
int smallestDifference(vector<int>& a, vector<int>& b) {
int m = a.size(), n = b.size();
sort(a.begin(), a.end());
sort(b.begin(), b.end());
int pa = 0, pb = 0;
long ret = LONG_MAX;
while(pa < m && pb < n)
{
ret = min(ret, abs((long)a[pa] - (long)b[pb])); // 注意int的溢出
if(a[pa] < b[pb]) // 当这种情况时,如果要寻求一个更小的差,需要将a[pa]变大。变大后会出现新的a[pa] > b[pb]或者a[pa] < b[pb]的情况。因为如果此时变大b[pb]时,只会导致他们的差距yue'lai'yue
++pa;
else
++pb;
}
return ret;
}
};