Previous Greater Element šŸŽÆ

beginner
6 min

Previous Greater Element šŸŽÆ

Welcome to CodeYourCraft, where we learn and code together! Today, we're going to dive into an interesting problem-solving technique called the Previous Greater Element (PGE). This concept is a valuable tool for developers, especially when working on data analysis and competitive programming tasks.

What is the Previous Greater Element (PGE)? šŸ“

In simple terms, the Previous Greater Element of an element in a list is the first element to its left that is greater than it. This concept helps us in various tasks such as solving the "Next Greater Element" problem, improving algorithms' efficiency, and understanding data trends.

Why do we need PGE? šŸ’”

The Previous Greater Element helps us in several ways:

  1. Solving the Next Greater Element problem: By knowing the PGE, we can easily find the Next Greater Element (NGE) for each element in a list.

  2. Improving Algorithm Efficiency: PGE can be used to optimize algorithms, especially in competitive programming and data analysis.

  3. Understanding Data Trends: PGE helps us analyze data trends and understand the relationship between elements in a list.

Let's Get Our Hands Dirty! šŸ¤

Now that we know why PGE is important, let's implement it with a practical example.

python
def previous_greater_element(arr): stack = [] nge_dict = {} for i in range(len(arr)): while stack and stack[-1] < arr[i]: last_smaller = stack.pop() if last_smaller in nge_dict: nge_dict[last_smaller].append(i) else: nge_dict[last_smaller] = [i] stack.append(arr[i]) while stack: last_smaller = stack.pop() nge_dict[last_smaller] = [-1] return nge_dict

In this Python example, we define a function previous_greater_element(arr) that takes a list of integers arr as input and returns a dictionary containing the Previous Greater Element for each element.

The function maintains a stack and a dictionary to keep track of the Next Greater Elements. It iterates through the array and for each element, it pops elements from the stack that are smaller than the current element until it finds a greater one. The popped elements and their indices are stored in the dictionary. Finally, it initializes the Previous Greater Element for elements that are the last in the list as -1.

Practical Application šŸ”§

Let's try our function on an example:

python
arr = [1, 5, 2, 6, 3, 4] print(previous_greater_element(arr))

Output:

{1: [-1], 5: [-1], 2: [-1], 6: [1], 3: [2], 4: [3]}

In this example, we can see that for the element 6, the Previous Greater Element is 1, because 1 is the first element to its left that is greater than 6. Similarly, for 3, the PGE is 2, and for 4, the PGE is 3.

Quiz Time! šŸ“

Let's test your understanding with a quick quiz:

Quick Quiz
Question 1 of 1

Given the list `[5, 3, 4, 6, 2]`, what is the Previous Greater Element for each element according to our function?

That's it for today! We hope you enjoyed learning about the Previous Greater Element. Stay tuned for more exciting lessons on data structures and algorithms here at CodeYourCraft. Happy coding! šŸ¤šŸ’»šŸ“š