leetcode:1014. 最佳观光组合

本文解析了LeetCode上的一道题目“最佳观光组合”,通过将问题转化为寻找最大值的过程,提出了一种高效的解题策略。使用Java实现,算法核心在于通过遍历数组,记录并更新A[i]+i的最大值,从而在统计每个景点j的答案时,能够快速得出最优解。

链接:https://leetcode-cn.com/problems/best-sightseeing-pair/
将公式分为 A [ i ] + i A[i]+i A[i]+i A [ j ] − j A[j]-j A[j]j两部分,在统计景点 j j j的答案时,由于 A [ j ] − j A[j]-j A[j]j是不变的,我们只需把它加上前面 A [ i ] + i A[i]+i A[i]+i的最大值。因此当我们遍历数组时,记录下 A [ i ] + i A[i]+i A[i]+i的最大值即可。
java代码:

class Solution {
    public int maxScoreSightseeingPair(int[] A) {
        int max = A[0];
        int ans = A[0]+A[1]-1;
        for(int i = 1;i<A.length;i++)
        {
            if(ans<A[i]+max-i)
                ans = A[i]+max-i;
            if(A[i]+i>max)
                max = A[i]+i;
        }
        return ans;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值