请教大佬们一个编程题

现有一个整形数组,你可以重新排列数组中的元素,也可以任意删除元素,使得新数组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

相关推荐

点赞 评论 收藏
分享
06-07 19:59
门头沟学院 C++
补药卡我啊😭:都快15年前的了还在11新特性
你的简历改到第几版了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 12:11
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务