JB TAK FODEGA NHI .... TB TK CHODEGA NHI .... (MAANG)

SQP6 Next Greatest Element I

Given an array arr[ ] of size N having elements, the task is to find the next greater element for each element of the array in order of their appearance in the array. Next greater element of an element in the array is the nearest element on the right which is greater than the current element. If there does not exist next greater of current element, then next greater element for current element is -1. For example, next greater of the last element is always -1.

Example 1:
Input: N = 4, arr[] = [1 3 2 4]
Output: 3 4 4 -1
Explanation:
In the array, the next larger element to 1 is 3 , 3 is 4 , 2 is 4 and for 4 ? since it doesn't exist, it is -1.

Example 2:
Input: N = 5, arr[] [6 8 0 1 3]
Output: 8 -1 1 3 -1
Explanation:
In the array, the next larger element to 6 is 8, for 8 there is no larger elements hence it is -1, for 0 it is 1 , for 1 it is 3 and then for 3 there is no larger element on right and hence -1.

Constraints:
- 1 ≤ N ≤ 10^6
- 0 ≤ Ai ≤ 10^18



Notes

Note: Zoom for Better Understanding



Thought Process

This is is the first varient of the Problem that based on the Stack adn Queue

  • if we talked about the Brute Force Approch then Simpley we used the Nested Loop and find out the Every arr[i] next Gratest Element.
  •         for(i to n){
                for(i+1 to n){
                    find MAX Element
                }
            }
        
    Time Complexity:O(N^2) So interviewer not happy to this Solution, Now time to optimized the Approch using Stack

  • In this Case we Required the Stack
  • Simply we start the Iteration from the <- Rigtth side of the Array
  • We maintaing the Visited Array fro put the our data
  • if Satck is Empty then put the -1 at the Index of the visited Array

  • Every Iteration of i we checked if any element present into the Stack that is Smaller the arr[i] So simplly Removed all the element from the Stack that is smaller then arr[i].

    Othe wise take the top element from the stack and put into the Visited Array at the Index of i

  • Now this Approch follow Again and Again and we Solved the Question.

  • Dry Run



    Code Zone!

    Python Code
    C++ Code
    Java Code
    Sb Mai He Kru ...

    Khud Bhi Kr le Khuch ..... Nalayk


    Time Complexity:O(2N + 2N) ~ O(N) first loop for loop and Second for while loop
    Space Complexity:O(N)+O(N) for Stack and VisitdArray.


    Color
    Background
    Interview Docs File "All the Best" Team @DSAwithPrinceSingh

    ~ It's All About Consistency📈 Dedication🎯 HardWork💪 Happy Coding❤️ ~