华为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
华为Python 算法面试题的更多相关文章
- python 算法面试题
1.题目是:有一组“+”和“-”符号,要求将“+”排到左边,“-”排到右边,写出具体的实现方法. def StringSort(data): startIndex=0 endIndex=0 count ...
- Twitter算法面试题详解(Java实现)
最近在网上看到一道Twitter的算法面试题,网上已经有人给出了答案,不过可能有些人没太看明白(我也未验证是否正确),现在给出一个比较好理解的答案.先看一下题目. 图1 先看看图图1.可以将方块看做砖 ...
- 【转】Twitter算法面试题详解(Java实现)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://androidguy.blog.51cto.com/974126/1319659 ...
- Java算法面试题(史上最强、持续更新、吐血推荐)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- 算法实践——Twitter算法面试题(积水问题)的线性时间解法
问题描述:在下图里我们有不同高度的挡板.这个图片由一个整数数组所代表,数组中每个数是墙的高度.下图可以表示为数组(2.5.1.2.3.4.7.2).假如开始下雨了,那么挡板之间的水坑能够装多少水(水足 ...
- 【BAT经典算法面试题系列】求和为n的连续正整数
马上就要到9月份了,意味着一年一度的秋招就要开始了,相信不论是正在实习的童鞋还是马上就要找工作的童鞋,BAT无疑是国内的"明星企业",是每个学计算机的小伙伴们心之向往的企业,但是呢 ...
- 常见的js算法面试题收集,es6实现
1.js 统计一个字符串出现频率最高的字母/数字 let str = 'asdfghjklaqwertyuiopiaia'; const strChar = str => { let strin ...
- 算法面试题:一个List<Student>,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点!
算法面试题:一个List,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点! 解题思路 这是群里某位小伙伴去面试碰到的面试题,从题目本身来看,面试官应该是要考察面试者对泛型 Lis ...
- LeetCode 算法面试题汇总
LeetCode 算法面试题汇总 算法面试题 https://leetcode-cn.com/problemset/algorithms/ https://leetcode-cn.com/proble ...
随机推荐
- matplotlib 入门之Sample plots in Matplotlib
文章目录 Line Plot One figure, a set of subplots Image 展示图片 展示二元正态分布 A sample image Interpolating images ...
- XML 与 JSON大PK
导读 XML 和 JSON 是现今互联网中最常用的两种数据交换格式.XML 格式由 W3C 于 1996 年提出.JSON 格式由 Douglas Crockford 于 2002 年提出.虽然这两种 ...
- jabRef里引用的相邻同名作者变横线
用jabRef引用同名作者的文章时,出现了第二个文章的作者变成了横线,在搜了相关资料后,发现作如下修改可避免: 1.在.bib文件中加入开关,并修改默认配置: @IEEEtranBSTCTL{IEEE ...
- mac下的快捷键
功能 快捷键 通用 打开新窗口 command + n 打开新标签 command + t 关闭标签 command + w 缩小 command - 放大 command + 全屏.取消全屏 com ...
- JUnit的配置及使用
一.安装插件JUnitGenertor V2.0 File->Setting->Plugins->在搜索框里输入JUintGenerator V2.0 二.导入JUnit相关jar包 ...
- 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 ...
- 2019省赛训练组队赛3.31周四-17fj
https://vjudge.net/contest/289558#overview A - Frog Therearex frogs and y chicken in a garden. Kim f ...
- 初步了解HTTP
HTTP简介: HTTP:HyperText Transfer Protocol 超文本传输协议,是因特网上使用最为广泛的一种网络传输议,是用于从万维网(www :world wide web)服 ...
- Servlet--HttpServlet实现doGet和doPost请求的原理
转:https://blog.csdn.net/m0_38039437/article/details/75264012 一.HttpServlet简介 1.HttpServlet是GenericSe ...
- [转帖]SPU、SKU、ID,它们都是什么意思,三者又有什么区别和联系呢?
SPU.SKU.ID,它们都是什么意思,三者又有什么区别和联系呢? http://blog.sina.com.cn/s/blog_5ff11b130102wx0p.html 电商时代,数据为王. 所以 ...