1014、最佳观光组合

  1. 1014、最佳观光组合
    1. 示例:
  2. 题解
    1. 1、巧妙枚举

1014、最佳观光组合

给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。

一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。

返回一对观光景点能取得的最高分。

示例:

输入:[8,1,5,2,6]
输出:11
解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11

提示:

  • $2 <= A.length <= 50000$
  • $1 <= A[i] <= 1000$

链接:https://leetcode-cn.com/problems/best-sightseeing-pair

题解

求最大的 A[i] + A[j] + i - j

1、巧妙枚举

暴力枚举的过程是:

int maxScore = 0;
for (int i = 1;i < A.length;i++) {
    for (int j = 0;j < i;j++) {
        maxScore = Math.max(A[i] + A[j] + i - j,maxScore);
    }
}
return maxScore;

其实我们可以维护更新 max(A[i] + i),然后枚举每一个元素,更新最大值。

从而可以将复杂度从$O(n^2)$将至$O(n)$。

class Solution {
    public int maxScoreSightseeingPair(int[] A) {
        int max = A[0] + 0;
        int maxScore = 0;
        for (int i = 1;i < A.length;i++) {
            maxScore = Math.max(max + A[i] - i, maxScore);
            max = Math.max(A[i] + i, max);
        }
        return maxScore;
    }
}
  • 另一种实现,没有 i - j
public int maxScoreSightseeingPair(int[] A) {
    int buff = A[0]; // 初始buff
    int ans = 0;
    for (int j = 1; j < A.length; j++) {
        // 随着时间推移,buff的效力不断减少
        // 初始效力为某个A[i], i < j
        // 随时间减少的效力正好为 j - i
        // 因此当前buff的剩余效力恰为 A[i] + i - j
        buff--;
        // 根据当前buff默默算一下自己的战斗力(战5渣..)
        ans = Math.max(ans, A[j] + buff); 
        // 看看当前buff剩余效力有没有刷新buff好,没有则刷新buff
        buff = Math.max(buff, A[j]);
    }
    return ans;
}

// 作者:dan-huang-jiang-xing-ren
// 链接:https://leetcode-cn.com/problems/best-sightseeing-pair/solution/lai-lai-lai-gei-zi-ji-jia-ge-buff-by-dan-huang-jia/

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1056615746@qq.com

💰

Title:1014、最佳观光组合

Count:491

Author:攀登

Created At:2020-07-26, 00:19:44

Updated At:2024-06-15, 15:52:32

Url:http://jiafeimao-gjf.github.io/2020/07/26/1014%E3%80%81%E6%9C%80%E4%BD%B3%E8%A7%82%E5%85%89%E7%BB%84%E5%90%88/

Copyright: 'Attribution-non-commercial-shared in the same way 4.0' Reprint please keep the original link and author.

×

Help us with donation