给定正整数数组 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)
一对景点(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