请教大佬们一个编程题

现有一个整形数组,你可以重新排列数组中的元素,也可以任意删除元素,使得新数组a按照以下公式:Sum = ∑a [i]*(i+1) 计算的和最大。


例:

输入:[-2,-5,0,4,-7]

输出:10

解释:新数组为[-2, 0, 4],sum = -2*1 + 0*2 + 4*3 = 10


输入:[-1,-2,-3]

输出:0

解释:新数组为[],sum = 0



本人太菜了,只有个暴力解法。不知道有没有更优雅的解题方法,望大佬们不吝赐教。十分感谢!

#笔试题目#
全部评论
def maxSum(l):     l.sort()     count = 0     summ = 0     l_new = []     for i in range(len(l)-1, -1, -1):         summ += l[i]         if summ <= 0:             break         else:             l_new.append(l[i])     ans = 0     for j in range(len(l_new)):         ans += (len(l_new)-j)*l_new[j]     return ans
点赞
送花
回复
分享
发布于 2020-09-11 16:33

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务