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

被折叠的 条评论
为什么被折叠?



