susesuse 发表于 2006-11-15 11:06

原帖由 hawk2012 于 2006-11-15 10:56 发表
假设数组a中的所有元素用a1, a2, a3, ..., an表示, 数组b中的为b1,b2,b3,...,bn表示。
那么令result = (a1 + a2 + a3+ ... + an) - (b1 + b2 + b3 + ... + bn)
                   = (a1 + a2 + a3+ ... + an) ...

所以 result = Sum - 2(b1 + b2 + b3 + ... + bn)
要使 result 为最小,只需要(b1 + b2 + b3 + ... + bn)为最大。

呵呵,没有考虑Sum - 2(b1 + b2 + b3 + ... + bn)可能为负数?

hawk2012 发表于 2006-11-15 11:08

是的, 是这个题目出的有问题,应该说是a b数组和的差的绝对值最小才对,不然我的算法就是最小的。

susesuse 发表于 2006-11-15 11:11

原帖由 hawk2012 于 2006-11-15 11:08 发表
是的, 是这个题目出的有问题,应该说是a b数组和的差的绝对值最小才对,不然我的算法就是最小的。
确实您的想法很有新意,一般人想不到,呵呵。

laowolf 发表于 2006-11-15 11:17

hawk2012的算法是正确滴?........................................你们肯定?
(b1 + b2 + b3 + ... + bn)为最大,那么结果就是最小的n个数减最大的n 个数,这样还能做出差最小..............................................................................................................?

hawk2012 发表于 2006-11-15 11:22

原帖由 laowolf 于 2006-11-15 11:17 发表
hawk2012的算法是正确滴?........................................你们肯定?
(b1 + b2 + b3 + ... + bn)为最大,那么结果就是最小的n个数减最大的n 个数,这样还能做出差最小................................... ...

是负数,当然是最小的。取绝对值是最大。

laowolf 发表于 2006-11-15 11:22

呵呵无语了......

moyan80 发表于 2006-11-15 12:38

O2O2...惊呆菜鸟无数……

cMEr 发表于 2006-11-15 14:06

个人觉得 xmyth 的比较合理些

求得天人惊现,以正视听。

:em11:

dalianpansky 发表于 2006-11-15 14:13

为啥没人评论我的想法呢?唉!

x2 发表于 2006-11-15 15:36

如果要求a-b最小, 将a和b联合成一个数组, 然后从小到大排序不行吗?
页: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19
查看完整版本: 华为面试题(8分钟写出代码)