参考了官方的解题思路
from typing import List
# 题目的公式为value=values[i]+values[j]+i-j,其中i,j为数组中的索引,values[i]表示第i个元素的值。我们就根据公式来看问题
# 可以将公式看为两部分的加法value=(values[i]+i) + (values[j]-j)
# 所以我们维护values[i]+i的最大值,然后枚举取最后结果的最大值即可
class Solution:
def maxScoreSightseeingPair(self, values: List[int]) -> int:
# 定义一个变量来记录公式结果
ans = 0
# 定义一个变量来记录当前的最大值对应的索引
mx = 0
for j in range(len(values)):
# ans记录了结果的最大值
ans = max(ans, mx + values[j] - j)
# mx相当于维护了values[i]+i的最大值
mx = max(mx, values[j] + j)
return ans