# 1021. 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 1:

Input:

```[8,1,5,2,6]
```

Output:

```11
Explanation: i = 0, j = 2, `A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11````

Note:

1. `2 <= A.length <= 50000`
2. `1 <= A[i] <= 1000`

#### Thoughts:

Scan from left to right, record:

• best score so far()
• the best left element which could generate the largest score with the next element.
• As we move on to the next, gap ++, impact/score — with the prev. best left element

```class Solution {

/**
* @param Integer[] \$A
* @return Integer
*/
function maxScoreSightseeingPair(\$A) {
\$bestResult = 0;    // Best Score (A[i] + A[j] + i - j)
\$bestAI = 0;        // The best choice of A[i] so far
foreach(\$A as \$a){
// Moved to next, gap++, then the "sightseeing value" --
\$bestAI --;
// Best result =
\$bestResult = max(\$bestResult, \$bestAI + \$a );
\$bestAI = max(\$a, \$bestAI);
}
return \$bestResult;
}
}```

well sure I can combine \$bestAI –; into other expressions. Just to make it clear in this way.

This site uses Akismet to reduce spam. Learn how your comment data is processed.