题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版)

#-*- coding:utf-8 -*-

class Magic:
'''
a:用于存储数组a
b:用于存储数组b
num:用于存储数组最后的结果
flag:当已经没有可以移动的数据,flag置为1
'''
def __init__(self,a,b):
self.a=a
self.b=b
self.num=0
self.flag=0
'''
avg_a:存储数组a的平均值
avg_b:存储数组b的平均值
当avg_a>avg_b时,表示数组a中可以移动到b中,移动一个处于avg_b~avg_a之间的数,
移动之后,重新计算avg_a、avg_b,看是否还有处于avg_b~avg_a之间的数,有,继续
递归,没有,flag置为1;当avg_a<avg_b时同理。
'''
def fun(self):
avg_a=float(sum(self.a)/(len(self.a)*1.0))#取浮点数
avg_b=float(sum(self.b)/(len(self.b)*1.0))#取浮点数
if self.flag==0:
if avg_a>avg_b:
self.num+=1
self.get_num_a(avg_a,avg_b)
self.fun()
elif avg_b>avg_a:
self.num+=1
self.get_num_b(avg_a,avg_b)
self.fun()
else:
return
else:
return #当avg_a>avg_b,执行该方法
def get_num_a(self,avg_a,avg_b):
for i in range(len(self.a)):
if self.a[i]>=avg_b and self.a[i]<=avg_a:
self.a.remove(self.a[i])
self.b.append(self.a[i])
break
#最后一个数都不符合要求,表明其中没有在avg_b~avg_a之间的数
if i==len(self.a)-1:
self.flag=1
return
#当avg_b>avg_a,执行该方法
def get_num_b(self,avg_a,avg_b):
for i in range(len(self.b)):
if self.b[i]>=avg_a and self.b[i]<=avg_b:
self.b.remove(self.b[i])
self.a.append(self.b[i])
break
# 最后一个数都不符合要求,表明其中没有在avg_b~avg_a之间的数
if i==len(self.b)-1:
self.flag=1
return
if __name__=="__main__":
n_m=raw_input()
n=raw_input().split(' ')
m=raw_input().split(' ')
a=[int(i) for i in n]
b=[int(j) for j in m]
magic=Magic(a,b)
magic.fun()
print magic.num-1

2018春招-今日头条笔试题-第四题(python)的更多相关文章

  1. 2018春招-今日头条笔试题-第三题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 本题的做法最重要的应该是如何拼出‘1234567890’,对于输入表达试获得对应的结果利用python内置函数eval ...

  2. 2018春招-今日头条笔试题-第二题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 利用深度优先搜索 #-*- coding:utf-8 -*- class DFS: ''' num:用于存储最后执行次 ...

  3. 2018春招-今日头条笔试题-第一题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 要想得到输入的数字列中存在相隔为k的数,可以将输入的数字加上k,然后判断其在不在输入的数字列中即可. #-*- cod ...

  4. 2018春招-今日头条笔试题5题(后附大佬答案-c++版)

    1题目描述 在n个元素的数组中,找到差值为k的除重后的数字对 输入描述 第一行:n和k,n表示数字的个数,k表示差值 第二行:n个整数 输入样例 输入: 5 2 1 5 3 4 2 输出: 3 说明: ...

  5. 剑指Offer——完美+今日头条笔试题+知识点总结

    剑指Offer--完美+今日头条笔试题+知识点总结 情景回顾 时间:2016.9.28 16:00-18:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:完美世界笔试 ...

  6. 华为2018软件岗笔试题之第一题python求解分享

    闲来无事,突然看到博客园首页上有人写了篇了华为2018软件岗笔试题解题思路和源代码分享.看了下题目,感觉第一题能做出来,就想着用刚刚学的python试着写一下,花费的时间有点长~~,看来又好长时间没练 ...

  7. Trie树/字典树题目(2017今日头条笔试题:异或)

    /* 本程序说明: [编程题] 异或 时间限制:1秒 空间限制:32768K 给定整数m以及n个数字A1,A2,..An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果,请求出这些结果中大 ...

  8. Python3从零开始爬取今日头条的新闻【四、模拟点击切换tab标签获取内容】

    Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Pyt ...

  9. 百度2016研发project师笔试题(四)

    百度2016研发project师笔试题(四) 2015/12/8 10:42(网上收集整理的,參考答案在后面.若有错误请大神指出) 1. 关于MapReduce的描写叙述错误的是() A. 一个Tas ...

随机推荐

  1. yum基本操作(转)

    原文地址:http://www.cnblogs.com/chuncn/archive/2010/10/17/1853915.html yum(全称为 Yellow dog Updater, Modif ...

  2. php一些方法说明

    var_dump():判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型.此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值.数组将递归展开值,通过缩进显 ...

  3. [转] libcurl异步方式使用总结(附流程图)

    文为转载,原文地址:libcurl异步方式使用总结 实习期间用到了libcurl来做HTTPS双向认证,用的是异步方式,简单总结一下. libcurl这个库的同步方式很简单,不做介绍,而异步方式很难理 ...

  4. Hibernate 的复杂用法HibernateCallback

    HibernateTemplate还提供了一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式.HibernateTemplate的灵活访问方式可通过如下两个方法完成: ...

  5. 四则运算(Java)--温铭淇,付夏阳

    GitHub项目地址: https://github.com/fxyJAVA/Calculation 四则运算项目要求: 程序处理用户需求的模式为: Myapp.exe -n num -r size ...

  6. 【转】C#发送Email邮件

    转自:http://hi.baidu.com/bluesky_cn/item/8bb060ace834c53f020a4df2 下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需 ...

  7. 配置Jenkins构建失败触发邮件报警机制

    系统管理 1.进入系统管理-->系统设置 定位到Jenkins Location配置项   配置系统管理员邮件地址 系统管理员邮件地址需要同发送报警邮件地址相同 定位到邮件通知   配置SMTP ...

  8. 再也不用线上倒数据了,使用 Faker 来造一批假的数据吧。

    背景每当建表之后,常常需要写一批假的数据,用于测试算法.数据量的压力测试.列表翻页. 查看详情.数据关联等.这时就需要借助一款造数据的工具,它就是今天所要介绍的 Faker. 介绍 Faker 这个工 ...

  9. ASP.NET Core学习总结(1)

    经过那么长时间的学习,终于想给自己这段时间的学习工作做个总结了.记得刚开始学习的时候,什么资料都没有,光就啃文档.不过,值得庆幸的是,自己总算还有一些Web开发的基础.至少ASP.NET的WebFor ...

  10. On extracting ops from LLVM backend

    Symbols and ops generation: llvm::Function* BackendLLVM::build_llvm_instance (bool groupentry) Work ...