All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g1001_1100.s1014_best_sightseeing_pair.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
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