给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。
一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。
返回一对观光景点能取得的最高分。

(A[i] + A[j] + i - j)= (A[i]+i)+ (A[j]-j)
对于位置j来说,第二部分的值是固定的,我们用一个数组d[j]记录位置j之前出现的最大的(A[i]+i)
res = max(d[j] + A[j]  - j,res)
 
class Solution:
    def maxScoreSightseeingPair(self, A: List[int]) -> int:
        if not A oor len(A)<=1:
            return 0
        d = [0] * len(A)
        d[1] = A[0]
        res = d[1] +A[1]-1

        for i in range(2,len(A)):
            d[i] = max(d[i-1],A[i-1]+i-1)
            res = max(res,d[i]+A[i]-i)
        return res