Java
class Solution {
public int maxScoreSightseeingPair(int[] A) {
if ( A.length <= 1 ) return 0 ;
if ( A.length == 2) return A[0] + A[1] - 1 ;
int res = 0 , cur = 0 ;
for ( int v : A) {
res = Math.max(res, cur + v);
cur = Math.max(cur, v) - 1;
}
return res;
}
}
Go
func maxScoreSightseeingPair(A []int) int {
if len(A) <= 1 { return 0 }
if len(A) == 2 { return A[0] + A[1] - 1}
ans,max := 0 ,A[0] + 0
for i := 1 ; i < len(A) ; i++ {
if ans < max + A[i] - i {
ans = max + A[i] - i
}
if max < A[i] + i {
max = A[i] + i
}
}
return ans
}