LeetCode 0946. Validate Stack Sequences Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
0946. Validate Stack Sequences

Description

Given two integer arrays pushed and popped each with distinct values, return true if this could have been the result of a sequence of push and pop operations on an initially empty stack, or false otherwise.

 

Example 1:

Input: pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
Output: true
Explanation: We might do the following sequence:
push(1), push(2), push(3), push(4),
pop() -> 4,
push(5),
pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1

Example 2:

Input: pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
Output: false
Explanation: 1 cannot be popped before 2.

 

Constraints:

  • 1 <= pushed.length <= 1000
  • 0 <= pushed[i] <= 1000
  • All the elements of pushed are unique.
  • popped.length == pushed.length
  • popped is a permutation of pushed.

Solutions

Solution 1: Stack Simulation

We iterate through the pushed array. For the current element x being iterated, we push it into the stack stk. Then, we check if the top element of the stack is equal to the next element to be popped in the popped array. If they are equal, we pop the top element from the stack and increment the index i of the next element to be popped in the popped array. Finally, if all elements can be popped in the order specified by the popped array, return true; otherwise, return false.

The time complexity is O(n), and the space complexity is O(n). Here, n is the length of the pushed array.

PythonJavaC++GoTypeScriptRustJavaScriptC#
class Solution: def validateStackSequences(self, pushed: List[int], popped: List[int]) -> bool: stk = [] i = 0 for x in pushed: stk.append(x) while stk and stk[-1] == popped[i]: stk.pop() i += 1 return i == len(popped)(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !