Maximum Difference Between Increasing Elements

easy array

Problem

Given a 0-indexed array nums, find the maximum difference nums[j] − nums[i] over all pairs with i < j and nums[i] < nums[j]. If no such pair exists, return −1.

Inputnums = [7,1,5,4]
Output4
nums[2] − nums[1] = 5 − 1 = 4 is the largest.

def maximum_difference(nums):
    min_so_far = nums[0]
    best = -1
    for j in range(1, len(nums)):
        if nums[j] > min_so_far:
            best = max(best, nums[j] - min_so_far)
        else:
            min_so_far = nums[j]
    return best
function maximumDifference(nums) {
  let minSoFar = nums[0], best = -1;
  for (let j = 1; j < nums.length; j++) {
    if (nums[j] > minSoFar) best = Math.max(best, nums[j] - minSoFar);
    else minSoFar = nums[j];
  }
  return best;
}
class Solution {
    public int maximumDifference(int[] nums) {
        int minSoFar = nums[0], best = -1;
        for (int j = 1; j < nums.length; j++) {
            if (nums[j] > minSoFar) best = Math.max(best, nums[j] - minSoFar);
            else minSoFar = nums[j];
        }
        return best;
    }
}
int maximumDifference(vector<int>& nums) {
    int minSoFar = nums[0], best = -1;
    for (int j = 1; j < (int)nums.size(); j++) {
        if (nums[j] > minSoFar) best = max(best, nums[j] - minSoFar);
        else minSoFar = nums[j];
    }
    return best;
}
Time: O(n) Space: O(1)