2018春招-今日头条笔试题-第四题(python)
2018-03-29 18:56
711 查看
题目描述: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)
- 2018春招-今日头条笔试题-第三题(python)
- 2018春招-今日头条笔试题-第一题(python)
- 今日头条2018春季校园招聘研发岗位笔试编程题第一、二题
- 今日头条2018春季校园招聘研发岗位笔试编程题1
- 今日头条2018春招笔试题js版本
- Python实现互联网笔试题-今日头条-3个一组的试题
- 今日头条2018实习生在线编程笔试题
- 今日头条2018校招笔试题之字符串的问题
- 2018今日头条笔试(第二题)
- 2018今日头条3.24笔试题目2
- [置顶] 今日头条2018春季校园招聘研发岗位笔试 题解 临时版
- 今日头条2018春季校园招聘研发岗位笔试编程题4
- 今日头条2018春季校园招聘研发岗位笔试编程题2
- 今日头条2018春季 算法实习生编程题 python
- 2018今日头条内推笔试2
- 今日头条2018笔试第二题
- 2018今日头条内推笔试1
- 今日头条2018春招研发岗笔试题目
- [今日头条] 2017客户端工程师实习生笔试题