题意
题解
从后向前遍历,对于每个 i i i,维护 A [ j ] − j A[j]-j A[j]−j 取最大值的 j , i < j j,i<j j,i<j,更新答案。满足
A [ i ] − i ≥ A [ j ] − j A[i]-i\geq A[j]-j A[i]−i≥A[j]−j
即可更新 j j j。
class Solution
{
public:
int maxScoreSightseeingPair(vector<int> &A)
{
int res = INT_MIN, n = A.size();
for (int i = n - 2, j = n - 1; i >= 0; i--)
{
res = max(res, A[i] + A[j] + i - j);
j = A[i] - A[j] >= i - j ? i : j;
}
return res;
}
};