当前位置: 首页 > article >正文

【每日一题】LeetCode 1014.最佳观光组合(数组、动态规划、枚举右维护左)

【每日一题】LeetCode 1014.最佳观光组合(数组、动态规划、枚举右维护左)

题目描述

给定一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 ij 之间的距离为 j - i

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

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

示例

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

  2. 输入:values = [1,2]
    输出:2

提示

  • 2 <= values.length <= 5 * 10^4
  • 1 <= values[i] <= 1000

思路分析

这个问题可以通过动态规划的思想来解决。我们可以维护两个变量,max 用来记录当前遍历到的景点中,能够与之前任意景点组合得到的最大分数的景点的评分加上其索引值(values[i] + i),ans 用来记录遍历过程中找到的最大组合得分。

遍历数组,对于每个景点 j,我们计算当前景点与之前所有景点 i 的组合得分,并更新 ans。同时,我们更新 max 为当前 values[j] + j,因为对于之后的任意景点 kk > j),values[j] + j 将会是与 values[k] 组合时可能得到的最大 values[i] + i

输入示例

  • values = [8,1,5,2,6]
  • values = [1,2]

代码实现

class Solution {
    public int maxScoreSightseeingPair(int[] values) {
        // 初始化 max 为第一个景点的评分加上其索引,ans 为最低分数
        int max = values[0] + 0; // values[0] + i, 当 i = 0
        int ans = 0;
        
        // 遍历数组,从第二个元素开始
        for(int j = 1; j < values.length; j++){
            // 更新 ans 为当前找到的最大组合得分
            ans = Math.max(ans, max + values[j] - j);
            // 更新 max 为当前能够与之前任意景点组合得到的最大分数的景点的评分加上其索引值
            max = Math.max(max, values[j] + j);
        }
        // 返回找到的最大组合得分
        return ans;
    }
}

http://www.kler.cn/a/317223.html

相关文章:

  • JS 实现SSE通讯和了解SSE通讯
  • Scala入门基础(17.1)Set集习题
  • 轻松上手:使用Docker部署Java服务
  • 多叉树笔记
  • python实战(八)——情感识别(多分类)
  • 以往运维岗本人面试真题分享
  • 日志系统扩展一:日志落地数据库:MySQL、SQLite3
  • 《C++中打造绚丽红色主题图形界面》
  • Qt 文件操作
  • C++ Mean Shift算法
  • Llamaindex 使用过程中的常见问题 (FAQ)
  • 云原生周刊:Artifact Hub 成为 CNCF 孵化项目|2024.9.23
  • 【深度学习】03-神经网络3-1梯度下降网络优化方法
  • 2024年信息安全企业CRM选型与应用研究报告
  • 『功能项目』3D模型动态UI显示【76】
  • MovieLife 电影生活
  • 彻底删除国际版OneDrive for Business上的数据
  • 责任链模式实现规则校验
  • 智慧交通,智能消防系统助力高铁站安全
  • Anaconda 安装
  • Directives Vue3 自定义指令
  • 平衡二叉树(AVL树):原理、常见算法及其应用
  • cccccccccccc
  • Qt_布局管理器
  • 【漏洞复现】HIKVISION 视频编码设备接入网关 showFile.php 任意文件下载漏洞
  • tomcat 配置jenkins_home 目录