g1001_1100.s1014_best_sightseeing_pair.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g1001_1100.s1014_best_sightseeing_pair;
// #Medium #Array #Dynamic_Programming #Dynamic_Programming_I_Day_7
// #2022_02_25_Time_2_ms_(99.86%)_Space_51.3_MB_(73.75%)
/**
* 1014 - Best Sightseeing Pair\.
*
* Medium
*
* You are given an integer array `values` where values[i] represents the value of the ith
sightseeing spot. Two sightseeing spots `i` and `j` have a **distance** `j - i` between them.
*
* The score of a pair (`i < j`) of sightseeing spots is `values[i] + values[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:** values = [8,1,5,2,6]
*
* **Output:** 11
*
* **Explanation:** i = 0, j = 2, values[i] + values[j] + i - j = 8 + 5 + 0 - 2 = 11
*
* **Example 2:**
*
* **Input:** values = [1,2]
*
* **Output:** 2
*
* **Constraints:**
*
* * 2 <= values.length <= 5 * 104
* * `1 <= values[i] <= 1000`
**/
public class Solution {
public int maxScoreSightseeingPair(int[] values) {
int bestPrevious = values[0];
int maxSum = 0;
for (int i = 1; i < values.length; ++i) {
maxSum = Math.max(maxSum, bestPrevious + values[i] - i);
bestPrevious = Math.max(bestPrevious, values[i] + i);
}
return maxSum;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy