腾讯2019年暑期实习生招聘在线笔试技术研究和数据分析方向第三题(python)

原文链接: http://www.cnblogs.com/277223178dudu/p/10669126.html
一天,小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), '%')

  

转载于:https://www.cnblogs.com/277223178dudu/p/10669126.html

猜你喜欢

转载自blog.csdn.net/weixin_30877493/article/details/94802262
今日推荐