LeetCode 1014. Best Sightseeing Pair

38 阅读1分钟

🔗 leetcode.com/problems/be…

题目

  • 给一个数组,找出其中的一个 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;
        
    }
};