Skip to content

Conversation

@gokul000410
Copy link

Problem Description:
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

Operations:

push(x) — Push element x onto the stack.

pop() — Removes the top element from the stack.

top() — Retrieves the top element.

getMin() — Retrieves the minimum element in the stack.

Example:

min_stack = MinStack()
min_stack.push(-2)
min_stack.push(0)
min_stack.push(-3)
print(min_stack.getMin()) # Output: -3
min_stack.pop()
print(min_stack.top()) # Output: 0
print(min_stack.getMin()) # Output: -2

Pattern: Stack with extra information / Two-stack approach

Time Complexity:

push: O(1)

pop: O(1)

top: O(1)

getMin: O(1)

Space Complexity:

O(n) extra space for the auxiliary stack to store minimums

@algorithms-keeperalgorithms-keeperbot added the awaiting reviews This PR is ready to be reviewed label Dec 15, 2025
Updated method names and docstrings for clarity.
@algorithms-keeperalgorithms-keeperbot added require descriptive names This PR needs descriptive function and/or variable names require tests Tests [doctest/unittest/pytest] are required require type hints https://docs.python.org/3/library/typing.html labels Dec 15, 2025
Copy link

@algorithms-keeperalgorithms-keeperbot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Click here to look at the relevant links ⬇️

🔗 Relevant Links

Repository:

Python:

Automated review generated by algorithms-keeper. If there's any problem regarding this review, please open an issue about it.

algorithms-keeper commands and options

algorithms-keeper actions can be triggered by commenting on this PR:

  • @algorithms-keeper review to trigger the checks for only added pull request files
  • @algorithms-keeper review-all to trigger the checks for all the pull request files, including the modified files. As we cannot post review comments on lines not part of the diff, this command will post all the messages in one comment.

NOTE: Commands are in beta and so this feature is restricted only to a member or owner of the organization.



class MinStack:
def __init__(self):

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please provide return type hint for the function: __init__. If the function does not return a value, please provide the type hint as:def function() -> None:

self.main_stack: list[int] = []
self.min_stack: list[int] = []

def push(self, x: int) -> None:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file data_structures/stacks/min_stack.py, please provide doctest for the function push

Please provide descriptive name for the parameter: x

if not self.min_stack or x <= self.min_stack[-1]:
self.min_stack.append(x)

def pop(self) -> None:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file data_structures/stacks/min_stack.py, please provide doctest for the function pop

if val == self.min_stack[-1]:
self.min_stack.pop()

def top(self) -> int | None:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file data_structures/stacks/min_stack.py, please provide doctest for the function top

"""Get the top element of the stack."""
return self.main_stack[-1] if self.main_stack else None

def get_min(self) -> int | None:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is no test file in this pull request nor any test function or class in the file data_structures/stacks/min_stack.py, please provide doctest for the function get_min

@algorithms-keeperalgorithms-keeperbot added tests are failing Do not merge until tests pass and removed tests are failing Do not merge until tests pass labels Dec 15, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting reviewsThis PR is ready to be reviewedrequire descriptive namesThis PR needs descriptive function and/or variable namesrequire testsTests [doctest/unittest/pytest] are requiredrequire type hintshttps://docs.python.org/3/library/typing.html

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@gokul000410