面试题 16.06. 最小差 (双指针)

面试题 16.06. 最小差 (双指针)_第1张图片

先排序,然后应用双指针逼近。代码很简单,重要的是需要拥有这种算法的思想。

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;
    }
};

你可能感兴趣的:(leetcode,双指针)