在 Python 中找出“有效”数组的最大值的程序
假设,我们有一个包含n个整数'nums'的数组。'nums'中的每个值代表它的'power'。如果数组的长度大于2并且数组的第一个值和最后一个值相等,则该数组将被评估为“有效”。我们必须通过从数组中删除元素来使数组有效,以便其余元素满足条件。作为输出,我们通过添加数组的所有功率值来返回数组的最大可能功率值。
因此,如果输入类似于nums=[3,4,5,3,4],那么输出将是16。
如果我们从数组nums中删除第一个值3,则它变为[4,5,3,4]。这是一个有效数组,幂的总和为4+5+3+4=16。这是给定输入中任何有效数组的最大可能总和。
示例
让我们看看以下实现以获得更好的理解-
def solve(nums):
table = {}
prefix = [0]
negative = [0]
for i, j in enumerate(nums):
if j not in table:
table[j] = [i, 0]
else:
table[j][-1] = i
prefix += prefix[-1] + j,
negative += negative[-1],
if j < 0:
negative[-1] += j
ans = float('-inf')
for i,j in table.values():
if j != 0:
sm1 = prefix[j+1] - prefix[i]
sm2 = negative[j] - negative[i+1] if j > i+1 else 0
ans = max(ans, sm1 - sm2)
return ans
print(solve([3, 4, 5, 3, 4]))输入
[3, 4, 5, 3, 4]输出结果
16
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短