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
}

浙公网安备 33010602011771号