首页 > 其他 > 详细

LintCode "The Smallest Difference"

时间:2015-10-02 13:39:07      阅读:1081      评论:0      收藏:0      [点我收藏+]

Binary search.

技术分享
class Solution {
    int _findClosest(vector<int> &A, int v)
    {
        int s = 0, e = A.size() - 1;
        int ret = INT_MAX;
        while(s <= e)
        {
            int mid = (s + e) / 2;
            int vmid = A[mid];
            int dist = abs(vmid - v);
            ret = min(ret, dist);
            
            if(vmid == v) return 0;
            if(vmid < v)
            {
                s = mid + 1;
            }
            else if(vmid > v)
            {
                e = mid - 1;
            }
        }
        return ret;
    }
public:
    /**
     * @param A, B: Two integer arrays.
     * @return: Their smallest difference.
     */
    int smallestDifference(vector<int> &A, vector<int> &B) {
        sort(A.begin(), A.end());
        
        int ret = INT_MAX;
        for(auto vb : B)
        {
            ret = min(ret, _findClosest(A, vb));   
        }
        return ret;
    }
};
View Code

LintCode "The Smallest Difference"

原文:http://www.cnblogs.com/tonix/p/4852135.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!