问题描述
给定正整数数组A
,A[i]
表示第i
个观光景点的评分,并且两个景点i
和j
之间的距离为j - i
。
一对景点(i < j
)组成的观光组合的得分为(A[i] + A[j] + i - j
):景点的评分之和减去它们两者之间的距离。
返回一对观光景点能取得的最高分。
示例:
输入:[8,1,5,2,6]
输出:11
解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11
解题思路
- (1)从前向后设置双for循环思路是正确的,但是超时。
- (2)将
A[i] + A[j] + i - j
拆分为A[i] + i
和A[j] - j
两项来计算。只要固定了A[j] - j
,在从前向后迭代时,记录0 - j - 1
中的A[i] + i
的最大值即可。
代码实现
class So