1. 题目描述
2. 题目分析
- 题目的意思,让你求(A[i] + A[j] + i - j)的最大值,并且 i < j
- 可以进行一下交换,也就是求(A[i]+ i )+ (A[j] - j)的最大值,条件还是i < j
- 我们只需要找到(A[i]+ i )的最大值,加上(A[j] - j)最大值,当然条件还是i < j
- 重要代码:
max = Math.max(max, ans + A[j] - j); ans = Math.max(ans, A[j] + j);
3. 题目代码
clpublic static int maxScoreSightseeingPair(int[] A) { int len = A.length; int max = 0; int ans = A[0] + 0; for (int j = 1; j < len; j++) { max = Math.max(max, ans + A[j] - j); ans = Math.max(ans, A[j] + j); } return max; } }
