免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: forrestgang
打印 上一主题 下一主题

华为面试题(8分钟写出代码) [复制链接]

论坛徽章:
0
251 [报告]
发表于 2008-07-16 15:45 |只看该作者
我就过来看看

论坛徽章:
0
252 [报告]
发表于 2008-07-16 16:26 |只看该作者
我也看看

论坛徽章:
0
253 [报告]
发表于 2008-07-16 19:51 |只看该作者
其实快捷的算法,我昨天回复完后看了一些回复就想出一个,不过后来去看小说去了,就没有回复。
for( i=0;i<n;i++)
   max = max( arr_max(a+i),arr_max(b+i));
   交换a[ i] 和 max
   max=max( arr_max(a+i+1), arr_max(b+i));
   交换b[ i]和max
oh,yeah,成功了
sorry,这个算法是错的

[ 本帖最后由 blackuhlan 于 2008-7-16 23:39 编辑 ]

论坛徽章:
0
254 [报告]
发表于 2008-07-17 00:09 |只看该作者
这题目的意思会不会是把a和b放到一个数组中排序后,一数组取大值得五元素剩下的就是另一数组的了,相减后是负数了!负数不就是最小

论坛徽章:
0
255 [报告]
发表于 2008-07-17 10:02 |只看该作者
原帖由 yg 于 2006-11-13 10:17 发表
全部加起来除2,然后试算


我也觉得应该这样来做才能得到最小差

论坛徽章:
0
256 [报告]
发表于 2008-07-17 11:18 |只看该作者
我的想法是
1,分别求a,b的元素之和X,Y,比较大小,如不相等,得较大值X(设为a数组),;
2,将两个数组合并,然后求和,再被2除,得到平均值A;
3,求|X-A|为F,由1知F!=0;
4,在a中查找F,有则将其插入b;
5,没有F则将a顺序排列,查找和F最接近的值G(算法应选最优),将G插入b;
done;

[ 本帖最后由 lxbkey 于 2008-7-17 11:33 编辑 ]

论坛徽章:
0
257 [报告]
发表于 2008-07-17 19:06 |只看该作者

回复 #243 runforu 的帖子

可以验证一下啊 呵呵

论坛徽章:
0
258 [报告]
发表于 2008-07-17 19:10 |只看该作者

回复 #249 runforu 的帖子

不会啊 我试过了 对的  还有 请看241楼帖子

论坛徽章:
0
259 [报告]
发表于 2008-07-17 19:13 |只看该作者

回复 #249 runforu 的帖子

你需要看仔细 呵呵  我的是简单了验证了一下算法 所以我的数组设定的是固定的  为两个长度为5的数组  你用长度为3的验证是不会得到正确的结论的 呵呵

论坛徽章:
0
260 [报告]
发表于 2009-06-15 21:37 |只看该作者
这种方法应该可以:
就是将、其合并,然后排序。
如果n为偶数的话:两头取,为数组a的元素,剩下的为数组b的元素。
如果n为奇数,两头取暖(n-1)/2对后,再取中间、元素为a的元素,剩下的为b的元素。
这样取的话,可以实现其差的最小。
实现也简单。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP