腾讯2019年暑期实习生招聘在线笔试技术研究和数据分析方向第三题(python)
一天,小Q得到了一个包含n个数字的数组,他想对这个数组进行K次如下的操作
首先找出数组中最小的非0数字X,输出它,然后把数组中的所有非零数字都减去X;如果数组中的数字都是
0,那么直接输出0.
输入描述
第一行两个数字n和k,用一个空格分隔
第二行n个数字,每两个数字之间用一个空格分隔
满足1<=n,k<=10^5,数组中所有的数字ai满足
1<=ai<=10^9,
输出描述
k行,每行一个整数
输入
4 1
5 5 7 2
输出
2
输入
2 2
4 6
输出
4
2
def printnum(l1,l2): n, m = l1[0], l1[1] s=l2 s.sort() a=[] while m>0: index = -1 temp = 0 for i in range(n): if s[i] >0: index=i temp=s[i] break if index == -1: a.append(0) return a else: a.append(temp) for j in range(index,n): s[j] -=temp m -= 1 return a if __name__ == '__main__': test1 = {'l1': [4, 1], 'l2': [5, 5, 7, 2], 'result': [2]} test2 = {'l1': [2, 2], 'l2': [4, 6], 'result': [4 ,2]} test = [test1,test2] count = 0 for t in test: if printnum(t['l1'], t['l2']) == t['result']: count += 1 else: print('l1:', t['l1'], '\nl2:', t['l2'], '\nOutput:', printnum(t['l1'], t['l2']), '\nExpect:', t['result']) print('Case通过率:', count * 100 / len(test), '%')