📅  最后修改于: 2023-12-03 14:58:08.166000             🧑  作者: Mango
有一个长度为n的数组,每次可以将其中所有元素中除一个数以外的数减一,问最少需要几次操作才能使所有元素相等,并求出相等时的最大数组和。
def find_max_sum(arr):
n = len(arr)
min_val = min(arr)
arr = [x - min_val for x in arr]
sum_val = sum(arr)
m = arr.count(0)
return sum_val + m * min_val
arr = [1, 2, 3, 4, 5]
print(find_max_sum(arr)) # 15
arr = [1, 1, 1, 1, 1, 1, 1]
print(find_max_sum(arr)) # 7
arr = [1, 1, 1, 8]
print(find_max_sum(arr)) # 10
时间复杂度为O(n),因为需要遍历整个数组,查找最小值和统计元素个数。