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

发布时间:2021-12-15 10:40:55 作者:小新
来源:亿速云 阅读:119

这篇文章将为大家详细讲解有关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<j。这里设置两个变量,每次遍历时,ans记录当前最大得分,max_value记录最大的A[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如何解决最佳观光组合问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. 如何解决JavaScript随机数的组合问题
  2. 如何解决Linq多条件组合问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

leetcode

上一篇:Qt如何实现通用无边框拖动拉伸

下一篇:全网最新Log4j 漏洞修复和临时补救方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》