如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
华为python面试题华为python面试题有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的.差最小。1.将两序列合并为一个序列,并排序,为序列Source2.拿出最大元素Big,次大的元素Small3.在余下的序列S[:-2]进行平分,得到序列max,min4.将Small加到max序列,将Big加大min序列,重新计算新序列和,和大的为max,小的为min。Python代码defmean(sorted_list):ifnotsorted_list:return(([],[]))big=sorted_list[-1]small=sorted_list[-2]big_list,small_list=mean(sorted_list[:-2])big_list.append(small)small_list.append(big)big_list_sum=sum(big_list)small_list_sum=sum(small_list)ifbig_list_sum>small_list_sum:return((big_list,small_list))else:return((small_list,big_list))tests=[[1,2,3,4,5,6,700,800],[10001,10000,100,90,50,1],range(1,11),[12312,12311,232,210,30,29,3,2,1,1]]forlintests:l.sort()printprint“SourceList:\t”,ll1,l2=mean(l)print“ResultList:\t”,l1,l2print“Distance:\t”,abs(sum(l1)-sum(l2))print‘-*’*40输出结果Python代码SourceList:[1,2,3,4,5,6,700,800]ResultList:[1,4,5,800][2,3,6,700]Distance:99-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*SourceList:[1,50,90,100,10000,10001]ResultList:[50,90,10000][1,100,10001]Distance:38-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*SourceList:[1,2,3,4,5,6,7,8,9,10]ResultList:[2,3,6,7,10][1,4,5,8,9]Distance:1-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*SourceList:[1,1,2,3,29,30,210,232,12311,12312]ResultList:[1,3,29,232,12311][1,2,30,210,12312]Distance:21