欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > LeetCode 每日一题 ---- 【1014. 最佳观光组合】

LeetCode 每日一题 ---- 【1014. 最佳观光组合】

2024/10/24 15:21:33 来源:https://blog.csdn.net/qq_52354698/article/details/142454435  浏览:    关键词:LeetCode 每日一题 ---- 【1014. 最佳观光组合】

在这里插入图片描述

LeetCode 每日一题 ---- 【1014. 最佳观光组合】

  • 1014.最佳观光组合
    • 题解:枚举右 + 维护左

1014.最佳观光组合

题解:枚举右 + 维护左

在这里插入图片描述

先对题目中的式子进行变形

values[i] + values[j] + i - j ==> (values[i] + i) + (values[j] - j)

枚举右端点 j,同时维护 j 左侧的最大值 values[i] + i :leftnum,那么最终结果就变成了 result = max(leftnum + values[j] - j, result)

只进行一次遍历即可

//给你一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的 距离 为 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⁴ 
// 1 <= values[i] <= 1000 
// 
//
// Related Topics 数组 动态规划 👍 424 👎 0//leetcode submit region begin(Prohibit modification and deletion)
class Solution {public int maxScoreSightseeingPair(int[] values) {int result = 0;int leftnum = 0;// v[i] + i + v[j] - jfor (int j = 0; j < values.length; j ++ ) {if (j > 0) {leftnum = Math.max(leftnum, values[j - 1] + j - 1);}result = Math.max(result, leftnum + values[j] - j);}return result;}
}
//leetcode submit region end(Prohibit modification and deletion)

时间复杂度:
O(n)

空间复杂度:
O(1)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com