在 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

以上是 在 Python 中找出“有效”数组的最大值的程序 的全部内容, 来源链接: utcz.com/z/356274.html

回到顶部