华为算法面试题

  1. """
  2. 算法题:
  3. 提供一个序列,完成对这个序列的分割。要求分割后的两个序列彼此差值最小
  4. 实现函数,返回两个序列
  5. """
  6.  
  7. def func(i):
  8. i.sort()
  9. if not i:
  10. return (([], []))
  11.  
  12. max_num = i[-1]
  13. max_two_num = i[-2]
  14. max_list, min_list = func(i[:-2])
  15. max_list.append(max_two_num)
  16. min_list.append(max_num)
  17.  
  18. if sum(max_list) > sum(min_list):
  19. return ((max_list, min_list))
  20. else:
  21. return ((min_list, max_list))
  22.  
  23. l = [1, 46, 3, 8, 6, 4561, 4642, 45, 8, 9, 155, 1784]
  24. print(len(l))
  25. l1, l2 = func(l)
  26. print(l1, l2)

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

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

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

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

  1. """
  2. 算法题:
  3. 提供一个序列,完成对这个序列的分割。要求分割后的两个序列彼此差值最小
  4. 实现函数,返回两个序列
  5. """
  6.  
  7. def func(i):
  8. if not i:
  9. return ([], [])
  10. elif len(i) == 2:
  11. return (i[1:], i[0:])
  12. elif len(i) == 1:
  13. return (i[0:], [])
  14. else:
  15. max_num = i[-1]
  16.  
  17. max_two_num = i[-2]
  18.  
  19. max_list, min_list = func(i[:-2])
  20. max_list.append(max_two_num)
  21. min_list.append(max_num)
  22.  
  23. if sum(max_list) > sum(min_list):
  24. return (max_list, min_list)
  25. return (min_list, max_list)
  26.  
  27. # tests = [
  28. # [1, 2, 3, 5, 6, 7, 8],
  29. # [15446, 13, 165468, 113216, 1654613, 11, 132, 135416, 54],
  30. # range(1, 10)]
  31.  
  32. # for i in tests:
  33. # i.sort()
  34. # list_max, list_min = func(i)
  35.  
  36. l = [1, 46, 3, 8, 6, 4654, 45, 456546, 1313, 1321, 8, 9, 155]
  37. l.sort()
  38. print(len(l))
  39. l1, l2 = func(l)
  40. print(l1, l2)
  41. print(sum(l1), sum(l2))
  1. 13
  2. [1, 3, 8, 45, 46, 1321, 456546] [6, 8, 9, 155, 1313, 4654]
  3. 457970 6145

华为Python 算法面试题的更多相关文章

  1. python 算法面试题

    1.题目是:有一组“+”和“-”符号,要求将“+”排到左边,“-”排到右边,写出具体的实现方法. def StringSort(data): startIndex=0 endIndex=0 count ...

  2. Twitter算法面试题详解(Java实现)

    最近在网上看到一道Twitter的算法面试题,网上已经有人给出了答案,不过可能有些人没太看明白(我也未验证是否正确),现在给出一个比较好理解的答案.先看一下题目. 图1 先看看图图1.可以将方块看做砖 ...

  3. 【转】Twitter算法面试题详解(Java实现)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://androidguy.blog.51cto.com/974126/1319659 ...

  4. Java算法面试题(史上最强、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  5. 算法实践——Twitter算法面试题(积水问题)的线性时间解法

    问题描述:在下图里我们有不同高度的挡板.这个图片由一个整数数组所代表,数组中每个数是墙的高度.下图可以表示为数组(2.5.1.2.3.4.7.2).假如开始下雨了,那么挡板之间的水坑能够装多少水(水足 ...

  6. 【BAT经典算法面试题系列】求和为n的连续正整数

    马上就要到9月份了,意味着一年一度的秋招就要开始了,相信不论是正在实习的童鞋还是马上就要找工作的童鞋,BAT无疑是国内的"明星企业",是每个学计算机的小伙伴们心之向往的企业,但是呢 ...

  7. 常见的js算法面试题收集,es6实现

    1.js 统计一个字符串出现频率最高的字母/数字 let str = 'asdfghjklaqwertyuiopiaia'; const strChar = str => { let strin ...

  8. 算法面试题:一个List<Student>,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点!

    算法面试题:一个List,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点! 解题思路 这是群里某位小伙伴去面试碰到的面试题,从题目本身来看,面试官应该是要考察面试者对泛型 Lis ...

  9. LeetCode 算法面试题汇总

    LeetCode 算法面试题汇总 算法面试题 https://leetcode-cn.com/problemset/algorithms/ https://leetcode-cn.com/proble ...

随机推荐

  1. matplotlib 入门之Sample plots in Matplotlib

    文章目录 Line Plot One figure, a set of subplots Image 展示图片 展示二元正态分布 A sample image Interpolating images ...

  2. XML 与 JSON大PK

    导读 XML 和 JSON 是现今互联网中最常用的两种数据交换格式.XML 格式由 W3C 于 1996 年提出.JSON 格式由 Douglas Crockford 于 2002 年提出.虽然这两种 ...

  3. jabRef里引用的相邻同名作者变横线

    用jabRef引用同名作者的文章时,出现了第二个文章的作者变成了横线,在搜了相关资料后,发现作如下修改可避免: 1.在.bib文件中加入开关,并修改默认配置: @IEEEtranBSTCTL{IEEE ...

  4. mac下的快捷键

    功能 快捷键 通用 打开新窗口 command + n 打开新标签 command + t 关闭标签 command + w 缩小 command - 放大 command + 全屏.取消全屏 com ...

  5. JUnit的配置及使用

    一.安装插件JUnitGenertor V2.0 File->Setting->Plugins->在搜索框里输入JUintGenerator V2.0 二.导入JUnit相关jar包 ...

  6. 2019省赛训练组队赛3.26周二---FJUT 2016

    A.Minimum’s Revenge There is a graph of n vertices which are indexed from 1 to n. For any pair of di ...

  7. 2019省赛训练组队赛3.31周四-17fj

    https://vjudge.net/contest/289558#overview A - Frog Therearex frogs and y chicken in a garden. Kim f ...

  8. 初步了解HTTP

    HTTP简介: HTTP:HyperText  Transfer Protocol 超文本传输协议,是因特网上使用最为广泛的一种网络传输议,是用于从万维网(www :world  wide web)服 ...

  9. Servlet--HttpServlet实现doGet和doPost请求的原理

    转:https://blog.csdn.net/m0_38039437/article/details/75264012 一.HttpServlet简介 1.HttpServlet是GenericSe ...

  10. [转帖]SPU、SKU、ID,它们都是什么意思,三者又有什么区别和联系呢?

    SPU.SKU.ID,它们都是什么意思,三者又有什么区别和联系呢? http://blog.sina.com.cn/s/blog_5ff11b130102wx0p.html 电商时代,数据为王. 所以 ...