力扣--动态规划1014.最佳观光组合

思路分析:

  1. 初始化左侧景点的评分为第一个景点的评分,最终结果为0。
  2. 从第二个景点开始遍历数组。
  3. 对于每个景点,计算当前观光组合的得分,即当前景点的评分 + 左侧景点的评分 - 两者之间的距离。
  4. 更新最终结果为当前得分和之前结果的较大值。
  5. 更新左侧景点的评分为当前景点的评分 + 其在数组中的索引。
  6. 遍历完成后,最终结果即为最高的观光组合得分。
cpp 复制代码
class Solution {
public:
    int maxScoreSightseeingPair(vector<int>& values) {
        // 获取数组的长度
        int n = values.size();
        
        // 初始化左侧景点的评分为第一个景点的评分
        int left = values[0];
        
        // 初始化最终结果为0
        int res = 0;
        
        // 从第二个景点开始遍历
        for(int i = 1; i < n; i++) {
            // 计算当前观光组合的得分,即当前景点的评分 + 左侧景点的评分 - 两者之间的距离
            int currentScore = left + values[i] - i;
            
            // 更新最终结果为当前得分和之前结果的较大值
            res = max(res, currentScore);
            
            // 更新左侧景点的评分为当前景点的评分 + 其在数组中的索引
            left = max(left, values[i] + i);
        }
        
        // 返回最终结果
        return res;
    }
};
相关推荐
地平线开发者2 分钟前
【智驾中的大模型 -2】VLM 在自动驾驶中的应用
算法·自动驾驶
柯ran4 分钟前
数据结构|排序算法(三)选择排序 堆排序 归并排序
数据结构·算法·排序算法
愚润求学9 分钟前
【专题刷题】双指针(三):两数之和,三数之和,四数之和
c++·笔记·leetcode·刷题
汤姆_51113 分钟前
【c语言】深入理解指针2
c语言·开发语言
无敌的牛17 分钟前
滑动窗口209. 长度最小的子数组
数据结构·算法
愚润求学25 分钟前
【C++】map和set
开发语言·c++·笔记
末央&30 分钟前
【C++】priority_queue的底层封装和实现
开发语言·c++
挽天java40 分钟前
数据结构习题--岛屿数量
数据结构
Better Rose44 分钟前
【2025“华中杯”大学生数学建模挑战赛】C题:就业状态分析与预测 详细解题思路
c语言·开发语言·数学建模
天天扭码1 小时前
一分钟吃透一道面试算法题——字母异位词分组(最优解)
前端·javascript·算法