• 华为Python 算法面试题


    华为算法面试题 

    """
    算法题:
        提供一个序列,完成对这个序列的分割。要求分割后的两个序列彼此差值最小
        实现函数,返回两个序列
    """
    
    
    def func(i):
        i.sort()
        if not i:
            return (([], []))
    
        max_num = i[-1]
        max_two_num = i[-2]
        max_list, min_list = func(i[:-2])
        max_list.append(max_two_num)
        min_list.append(max_num)
    
        if sum(max_list) > sum(min_list):
            return ((max_list, min_list))
        else:
            return ((min_list, max_list))
    
    
    l = [1, 46, 3, 8, 6, 4561, 4642, 45, 8, 9, 155, 1784]
    print(len(l))
    l1, l2 = func(l)
    print(l1, l2)

     上面题目存在 问题必须要求 提供的序列是 偶数元素。

    如果奇数元素,因为每次递归减少2个元素。

    最后一个元素的时候,无法对第二个元素取值导致报错

    因此如果题意改动,可以使用以下版本

    """
    算法题:
        提供一个序列,完成对这个序列的分割。要求分割后的两个序列彼此差值最小
        实现函数,返回两个序列
    """
    
    
    def func(i):
        if not i:
            return ([], [])
        elif len(i) == 2:
            return (i[1:], i[0:])
        elif len(i) == 1:
            return (i[0:], [])
        else:
            max_num = i[-1]
    
            max_two_num = i[-2]
    
            max_list, min_list = func(i[:-2])
            max_list.append(max_two_num)
            min_list.append(max_num)
    
            if sum(max_list) > sum(min_list):
                return (max_list, min_list)
            return (min_list, max_list)
    
    
    # tests = [
    #     [1, 2, 3, 5, 6, 7, 8],
    #     [15446, 13, 165468, 113216, 1654613, 11, 132, 135416, 54],
    #     range(1, 10)]
    
    # for i in tests:
    #     i.sort()
    #     list_max, list_min = func(i)
    
    l = [1, 46, 3, 8, 6, 4654, 45, 456546, 1313, 1321, 8, 9, 155]
    l.sort()
    print(len(l))
    l1, l2 = func(l)
    print(l1, l2)
    print(sum(l1), sum(l2))
    13
    [1, 3, 8, 45, 46, 1321, 456546] [6, 8, 9, 155, 1313, 4654]
    457970 6145
  • 相关阅读:
    虚幻4目录文件结构
    虚幻4编译手记
    几个重要的坐标系
    关于(void**)及其相关的理解
    装饰器总结篇(持续更新ing)
    Linux中find常见用法示例
    linux grep命令
    linux下IPTABLES配置详解
    分布式数据库中间件DDM的实现原理
    消息队列应用场景解析
  • 原文地址:https://www.cnblogs.com/shijieli/p/10447072.html
Copyright © 2020-2023  润新知