最小差
来源:互联网 发布:vuze mac怎么用 编辑:程序博客网 时间:2024/04/28 02:10
题目描述:给定两个整数数组(第一个是数组 A,第二个是数组 B),在数组 A 中取 A[i],数组 B 中取 B[j],A[i] 和 B[j]两者的差越小越好(|A[i] - B[j]|)。返回最小差。
样例:给定数组 A = [3,4,6,7], B = [2,3,8,9],返回 0。
还记得之前做过一道“合并排序数组”的问题(详见:点击打开链接)。当时是选用了两个指针,分别指向两个数组,然后按照大小关系,合并数组。这道题求最小差,也可以用这种思路。
我们先将两个数组排序,此处,A和B都是排好的。用两个指针 i 和 j 分别指向这两个数组,初始时,都指向第一个元素,在这个例子里面,一个指3,一个指2. 差值是1
接下来,可以这样思考,既然指向的元素一个大,一个小,那么保持大的元素不变,小的元素向前增加,那就有可能缩减这个差,计算出新的差之后,再和旧的差比较,比旧的差小,则替换旧的差,成为暂时的最小值,直到其中有一个遍历完(因为当有一个遍历完时,再遍历另一个数组,得到的差只能更大)
那就很简单了:
class Solution: # @param A, B: Two lists of integer # @return: An integer def smallestDifference(self, A, B): A.sort() B.sort() i, j = 0, 0 nA, nB = len(A), len(B) min_num = abs(A[0] - B[0]) while i != nA and j != nB: min_num = min(abs(A[i] - B[j]), min_num) if A[i] > B[j]: j += 1 else: i += 1 return min_num # write your code here
0 0
- 最小差
- 最小差
- 最小差
- 最小差
- 之间的差最小
- LintCode-最小差
- 006最小身高差
- LintCode:最小差
- LintCode_最小差
- LintCode:最小差
- HHU 1017: 最小差
- Java实现-最小差
- lintcode ---最小差
- Lintcode 最小差
- 最小差-LintCode
- 算法期中 最小差
- 序列和之差最小
- 数组之间的差最小
- Google Java编程风格指南
- 更新版本流程 ios
- Android自动滚动 轮播循环的ViewPager
- Delphi通过MSHTML实现一个HTML解析类
- 【排序算法】希尔排序原理及Java实现
- 最小差
- UNPv2第十一章:System V信号灯
- freertos and uCOSii
- 《python+opencv学习》一、Gui Features in Opencv(2)Matplotlib显示图片
- POJ 1837 Balance
- 百度地图开发之基础地图
- hadoop权威指南学习散记
- 单片机调试
- 网页加载速度优化分析