. - 力扣(LeetCode) 参考了官方的解题思路 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