千家信息网

LeetCode如何解决最佳观光组合问题

发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,这篇文章将为大家详细讲解有关LeetCode如何解决最佳观光组合问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1题目描述给定正整数数组 A,A[i] 表示第 i
千家信息网最后更新 2025年02月21日LeetCode如何解决最佳观光组合问题

这篇文章将为大家详细讲解有关LeetCode如何解决最佳观光组合问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1

题目描述

给定正整数数组 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)。

2

题解

思路:数组变换
这道题可以用遍历、双指针、动态规划的方法求解,但看网友的分享后,发现一个最为奇妙的方法:A[i] + A[j] + i - j = (A[i] + i) + ( A[j] - j ),因此对于A[j] - j ,只需找到最大的A[i] + i即可,此处i
class Solution:    def maxScoreSightseeingPair(self, A: List[int]) -> int:        if len(A)<2:            return 0        max_value = A[0]+0        ans = 0        for i in range(1,len(A)):            if A[i]-i+max_value>ans:                ans = A[i]-i+max_value            if A[i]+i>max_value:                max_value = A[i]+i        return ans

关于"LeetCode如何解决最佳观光组合问题"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0