最后更新于5年前
求A[i]+A[j]+i-j可以分解为A[i]+i和A[j]-j,由于i<j,于是一次遍历,用pre_max记录A[i]+i最大值
A[i]+A[j]+i-j
A[i]+i
A[j]-j
class Solution: def maxScoreSightseeingPair(self, A: List[int]) -> int: res = 0 pre_max = 0 for j in range(len(A)): res = max(res, A[j] - j + pre_max) pre_max = max(pre_max, A[j]+j) return res