1014. Best Sightseeing Pair
Given an array A
of positive integers, A[i]
represents the value of the i
-th sightseeing spot, and two sightseeing spots i
and j
have distance j - i
between them.
The score of a pair (i < j
) of sightseeing spots is (A[i] + A[j] + i - j)
: the sum of the values of the sightseeing spots, minus the distance between them.
Return the maximum score of a pair of sightseeing spots.
Example :
Input: [8,1,5,2,6]
Output: 11
Explanation: i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11
题目分析过程
题目代码
Java
class Solution {
public int maxScoreSightseeingPair(int[] A) {
int n=A.length;
int res=0;
int max_s=A[0];//相当于A[0]+0 =>A[i]+i
for(int j=1;j<n;++j){
res=Math.max(res,max_s+(A[j]-j));
max_s=Math.max(max_s,A[j]+j);//max_s写在res的后面,这样每次res比较的时候,A[j]-j加上的max_s都是比j小的i
}
return res;
}
}
Python
class Solution:
def maxScoreSightseeingPair(self, A: List[int]) -> int:
res=0
max_s=A[0]#相当于A[0]+0
for j in range(1,len(A)):
res=max(res,max_s+(A[j]-j))
max_s=max(max_s,(A[j]+j))
return res