05. Maximum Index

The problem can be found at the following link: Question Link

My Approach

  • Initialize the answer (ans) variable to -1, representing the maximum difference of indices.

  • Create two arrays (lmin and rmax) to store the minimum values on the left and maximum values on the right for each element.

  • Calculate the minimum values on the left (lmin) using a loop and store them in the array.

  • Calculate the maximum values on the right (rmax) using a loop and store them in the array.

  • Initialize two pointers (i and j) to iterate through the arrays.

  • While both pointers are within the array bounds:

    • Compare the minimum on the left (lmin[i]) and maximum on the right (rmax[j]).

    • If lmin[i] is less than rmax[j], update the answer (ans) with the maximum difference of indices (j - i), and increment j.

    • Otherwise, increment i.

  • Return the final answer.

Time and Auxiliary Space Complexity

  • Time Complexity: O(N), where N is the size of the array.

  • Auxiliary Space Complexity: O(N), two additional arrays of size N (lmin and rmax) are used.

Code (C++)

Contribution and Support

For discussions, questions, or doubts related to this solution, please visit our discussion section. We welcome your input and aim to foster a collaborative learning environment.

If you find this solution helpful, consider supporting us by giving a ⭐ star to the getlost01/gfg-potd repository.

Last updated

Was this helpful?