程序找到一对(i,j),其中nums [i] + nums [j] +(i -j)在Python中最大化?

假设我们有一个称为nums的数字列表,我们必须找到一个对(i,j),其中i <j,并且nums [i] + nums [j] +(i-j)被最大化。

因此,如果输入类似于nums = [6、6、2、2、2、2、8],则输出将为11,就像我们选择两个6一样,其得分为6 + 6 + 0-1 = 11 。

为了解决这个问题,我们将按照以下步骤操作:

  • 大:= nums [0]

  • 最大:= 0

  • 对于范围为1到nums的i

    • 大:=大-1

    • maxi:=大数+ nums [i]和maxi的最大值

    • 大:=大和数字的最大值[i]

  • 返回最大值

让我们看一下下面的实现以获得更好的理解

示例

class Solution:
   def solve(self, nums):
      large = nums[0]

      maxi = 0
      for i in range(1, len(nums)):
         large -= 1
         maxi = max(large + nums[i], maxi)
         large = max(large, nums[i])

      return maxi

ob = Solution()nums = [6, 6, 2, 2, 2, 8]
print(ob.solve(nums))

输入值

[6, 6, 2, 2, 2, 8]

输出结果

11
猜你喜欢