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

 

def printindex(n,arr):
    # n =  int(input())
    # arr = list(map(int,input().split(' ')))
    li1=[]
    li2=[]
    for i in range(n):
        if(arr[i]<0):
            li1.append(i)
        else:
            li2.append(i)
    index = 0
    for i in li2:
        for j in li1:
            if abs(arr[i]>abs(arr[j])):
                index +=abs(j-i)*abs(arr[j])
                arr[i] = arr[i] -abs(arr[j])
                arr[j] =0
            else:
                index +=abs(j-i)*abs(arr[i])
                arr[j] = arr[j]+arr[i]
                arr[i]=0
                break
    return index
    # print(index)
if __name__ == '__main__':
    test1 = {'l1': [5], 'l2': [5, -4, 1, -3,1], 'result': [9]}
    # test2 = {'l1': [2, 2], 'l2': [4, 6], 'result': [4 ,2]}
    test = [test1]
    count = 0
    for t in test:
        if printindex(t['l1'], t['l2']) == t['result']:
            count += 1
        else:
            print('l1:', t['l1'], '\nl2:', t['l2'], '\nOutput:', printindex(t['l1'], t['l2']), '\nExpect:',
                  t['result'])
    print('Case通过率:', count * 100 / len(test), '%')

  

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值