免费注册 查看新帖 |

Chinaunix

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

【华为公司Python面试题】,要求10分钟写出代码。。。 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2009-07-07 00:07 |显示全部楼层
# coding=gb2312
# 有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;
# 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。

def FindTargetItem(diff,lst):
    for item in lst:
        if diff >= item:
            return lst.index(item)
        else:
            return -1

def Process(lstA,lstB):
    sumA = sum(lstA)
    sumB = sum(lstB)
   
    lstA.sort()
    lstB.sort()
   
    if sumA == sumB:
        return
    elif sumA > sumB:
        diff = sumA - sumB
        while diff >= 0:
            targetIndex = FindTargetItem(diff,lstA)
            if targetIndex == -1:
                return
            else:
                lstB.append(lstA.pop(targetIndex))
            sumA = sum(lstA)
            sumB = sum(lstB)
            diff = sumA - sumB
    else:
        diff = sumB - sumA
        while diff >= 0:
            targetIndex = FindTargetItem(diff,lstB)
            if targetIndex == -1:
                return
            else:
                lstA.append(lstB.pop(targetIndex))
            sumA = sum(lstA)
            sumB = sum(lstB)
            diff = sumB - sumA
    return

论坛徽章:
0
2 [报告]
发表于 2009-07-07 00:24 |显示全部楼层
原帖由 wudi626 于 2009-7-7 00:07 发表
# coding=gb2312
# 有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;
# 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。

def FindTargetItem(diff,lst):
    for ...



仔细看了下,这个算法不符合要求!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP