LeetCode 1014. 最佳观光组合

1014. 最佳观光组合

题目链接

题目分析

题目给定的观光景点评分公式是dp = A[i] + A[j] + i - j,变化一下可以得到A[i] + iA[j] - j

我们可以发现,在遍历的过程中,只要固定了ij,前后两个式子就不会变。所以我们可以遍历原数组,在遍历的过程中不断更新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;
    }
};

你可能感兴趣的:(LeetCode 1014. 最佳观光组合)