题目
- 给一个数组,找出其中的一个 pair 对,使得 value_i + value_j + i - j 的值最大,即两个点的价值 - 两个点的距离
思路
- DP,从头遍历数组,记录到目前为止最大的 pre_max = value - distance,记录这过程中 pre_max + value - 1 的最大值
代码
class Solution {
public:
int maxScoreSightseeingPair(vector<int>& values) {
int ans = 0;
int pre_max = values[0];
for (int i = 1; i < values.size(); i++) {
ans = max(ans, pre_max + values[i] - 1);
pre_max = max(pre_max - 1, values[i]);
}
return ans;
}
};