1014. 最佳观光组合
题目链接
题目分析
题目给定的观光景点评分公式是dp = A[i] + A[j] + i - j
,变化一下可以得到A[i] + i
和A[j] - j
。
我们可以发现,在遍历的过程中,只要固定了i
和j
,前后两个式子就不会变。所以我们可以遍历原数组,在遍历的过程中不断更新A[i] + i
的最大值以及dp
。
遍历过程如下:
for (int i = 1; i < A.size(); i++) {
res = res > temp + A[j] - j ? res : temp + A[j] - j;
temp = temp > A[j] + j ? temp : A[j] + j;
}
最后返回res
即可。
题目解答
class Solution {
public:
int maxScoreSightseeingPair(vector& A) {
int res = INT_MIN;
int temp = A[0] + 0;
for (int j = 1; j < A.size(); j++) {
res = res > temp + A[j] - j ? res : temp + A[j] - j;
temp = temp > A[j] + j ? temp : A[j] + j;
}
return res;
}
};