lc1014-最佳观光组合

题目描述

  • 给定一个数组,找到两个索引 i, j,使得 arr[i] + arr[j] + i - j 最大
  • 返回这个最大值

示例

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

题解

  • 思路
    • 变换一下公式:(arr[i] + i) + (arr[j] - j)
    • 当 j 不变时,arr[i] + i 取最大值时式子最大
    • j 只管往后遍历,i 在前面维护最大值
func maxScoreSightseeingPair(values []int) int {
    res := 0
    for maxi, j := values[0], 1; j < len(values); j ++ {
        res = max(res, maxi + values[j] - j)
        maxi = max(maxi, values[j] + j)
    }
    return res
}
posted @ 2025-09-01 21:04  余越  阅读(9)  评论(0)    收藏  举报