DDSA Solutions

Max Score from Subarray Mins

Time: O(n)
Space: O(1)
Advertisement

Intuition

Maximize score = min(arr[i], arr[j]) * (i+j) over all pairs i < j. Greedy or sorted pairs.

Algorithm

  1. 1For adjacent pairs, min is more predictable. Consider all adjacent pairs: score = min(arr[i], arr[i+1]) * (i+i+1).

Common Pitfalls

  • Adjacent elements maximize score because non-adjacent pairs have smaller min. O(n) scan of adjacent pairs.
Max Score from Subarray Mins.java
Java
// Approach: For each pair of adjacent elements, their sum is a candidate (no non-adjacent sum can be better).
// Time: O(n) Space: O(1)
class Solution {
    public int maxSum(int arr[]) {
        int ans = Integer.MIN_VALUE;
        for (int i = 1; i < arr.length; i++)
            ans = Math.max(ans, arr[i] + arr[i - 1]);

        return ans;
    }
}
Advertisement
Was this solution helpful?