您的位置:首页 > Web前端

LintCode "The Smallest Difference"

2015-10-02 13:02 393 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: