. - 力扣(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