算法实验二:微软面试题——关于整数组最小差值的问题。
来源:互联网 发布:知客文化传播 培训 编辑:程序博客网 时间:2024/06/10 16:04
问题:
- 有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。
思路:
解决方案一:最愚笨的办法——暴力穷举,利用数组中所有数据两两相减的对比来求出这个最小差值。
解决方案二:设立辅助数组。以下是设立辅助数组的基本思路
设辅助数组为Bn.原来题目中给定的数组是An,则Bn等于:
B1 = A1 - A2;
B2 = A2 - A3;
B3 = A3 - A4;
......
Bn-1 = An-1 - An.
注意,Bn的长度是n-1,正好比An要小一个。聪明的同学看到这个辅助数组,立马就能猜到原因了,因为这样做的话,我们能够把这道看似无从下手求出最优解的问题转化为求Bn的绝对值最小的最长连续子序列和,因为Bn的连续子序列和便是An任意两数之差(注意,由于题目要求的是绝对值最小,所以求出A1-A2等效于得出A2-A1),例如:
A2 - A5 = B2 + B3 + B4 = A2 - A3 + A3 - A4 + A4 - A5 = A2 - A5
实际上,任何Ai - Aj(i<j) = sigma(k=i -> k=j-1)(k)。
文章思路引用:http://www.cnblogs.com/HappyAngel/archive/2011/08/22/2149916.html
0 0
- 算法实验二:微软面试题——关于整数组最小差值的问题。
- 算法--微软面试题:求一个整数数组元素间最小差值
- 关于微软面试题:"四人过桥"问题的思考——“n人过桥”问题的演进(Java实现)
- 关于微软面试题:"四人过桥"问题的思考——“n人过桥”问题的演进(Java实现)
- 微软,Google面试题 (5) —— 查找最小的k个元素
- 微软面试题<二>
- 微软算法面试题
- 关于一道微软面试题的思考
- 关于一道微软面试题的解答
- 关于微软的一道面试题
- C语言面试题二——微软篇
- 微软,Google面试题 (6) —— 判断整数序列是不是二元查找树的后序遍历结果
- 微软面试题——整数升序数组、数M,输出和为M的两个数组元素
- 面试题整理-最小没出现的整数
- 基于visual Studio2013解决面试题之1101差值最小
- 第2次实验——经典算法面试题
- 微软面试题之二
- 微软面试题(二)
- [LeetCode] Binary Tree Postorder Traversal [递归版]
- 等价类计数问题,置换,Burnside,Polya
- myeclipse8.5集成jprofiler7.2.3插件
- Unity3d GUI适应分辨率
- C语言中如何使用宏 包括单双井号 可变参数
- 算法实验二:微软面试题——关于整数组最小差值的问题。
- [php扩展开发和嵌入式]第17章-php源代码的配置和链接
- wait与notify实现多线程的协调通信
- 老调重弹:JDBC系列 之 <驱动加载原理全面解析>
- 最长上升子序列
- mtk LCD 驱动过程详解
- NetMap中查看Esri shape文件
- UNIX中的标准IO库
- mac下给手机安装apk包