C++ 中最佳观光对


假设我们有一个正整数数组 A,其中 A[i] 表示第 i 个观光点的价值,并且两个观光点 i 和 j 的距离为 j - i。现在,观光景点对 (i

为了解决这个问题,我们将遵循以下步骤 −

  • 设置 ret := 0,maxVal := 0,将 n 设置为 A 的大小

  • 对于 0 到 n – 1 范围内的 i

    • ret := ret 和 (maxVal + A[i] - i) 中的最大值

    • maxVal := (A[i] + i) 和 maxVal 中的最大值

  • 返回 ret

让我们看看以下实现以获得更好的理解 −

示例

在线演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int maxScoreSightseeingPair(vector<int>& A) {
      int ret = 0;
      int maxVal = 0;
      int n = A.size();
      for(int i = 0; i < n; i++){
         ret = max(ret, maxVal + A[i] - i);
         maxVal = max(A[i] + i, maxVal);
      }
      return ret;
   }
};
main(){
   vector<int> v1 = {8, 1, 5, 2, 6};
   Solution ob;
   cout << (ob.maxScoreSightseeingPair(v1));
}

输入

[8,1,5,2,6]

输出

11

更新于:2020 年 4 月 30 日

183 次浏览

开启您的 职业生涯

完成课程以获得认证

立即开始
广告