在Python中找到一个(i, j)对,使得nums[i] + nums[j] + (i – j)最大?
假设我们有一个叫做nums的数字列表,我们必须找到一个(i, j)对,其中i < j,并且nums[i] + nums[j] + (i – j)最大。
因此,如果输入是nums = [6, 6, 2, 2, 2, 8],则输出将是11,因为如果我们选择两个6,则其分数为6 + 6 + 0 – 1 = 11。
为了解决这个问题,我们将按照以下步骤进行:
- large := nums[0]
-
maxi := 0
-
for i in range(1 to size of nums), do
- large := large – 1
-
maxi := large + nums[i]和maxi中的最大值
-
large := large和nums[i]中的最大值
-
返回maxi
让我们看下面的实现,以更好地理解
更多Python相关文章,请阅读:Python 教程
示例
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