华为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 ... 
随机推荐
- Python中Socket粘包问题的解决
			服务器端 import socket import subprocess import struct server = socket.socket() ip_port = ("192.168 ... 
- Python—json模块
			用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ... 
- c++入门之引用
			引用通常被用在函数形参传递的过程中.一般的参数传递的过程:将实参进行拷贝,函数中都是对拷贝的变量进行操作,而不是对原变量进行操作.但很多情况下,我们都希望对原变量进行操作.(比如交换两个变量的数值). ... 
- 如何让vba与java的TripleDES算法通用
			本文链接:http://www.cnblogs.com/Charltsing/p/TripleDES.html 众所周知,java默认采用的TripleDES算法是ECB+PKCS#5填充方式.网上可 ... 
- RabbitMQ防止消息丢失
			转载请注明出处 0.目录 RabbitMQ-从基础到实战(1)— Hello RabbitMQ RabbitMQ-从基础到实战(3)— 消息的交换 1.简介 RabbitMQ中,消息丢失可以简单的分为 ... 
- c++局部变量在外可用的方法
			C++的局部变量在作用域结束后,一般都会被回收.如下面这段代码 map<a*, b*> _map; void fun() { a _a; b _b; _map[&_a] = &am ... 
- 一些Cassandra+YCSB异常
			这两天一直在用YCSB.昨天还可以用的YCSB,今天在测试Cassandra时遇到问题了. 环境是在公用局域网的一台debian机器,YCSB和Cassandra都在这台机器上.异常是开始运行YCSB ... 
- python中类方法,实例方法,静态方法的作用和区别
			Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么 ... 
- php开发之系统函数
			一些常用的php开发之系统函数的使用,可以使我们的开发效率,事倍功半 1) BC高精度函数库 2) 
- MySQL根据某个字段查询重复的数据
			select count(*) '个数',mobile '手机号',`name` '用户名' from users group by mobile having(count(*) > 1); = ... 
