Skip to content

Design1 Done #2276

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions MinStack1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
// Time Complexity : O(N)

Choose a reason for hiding this comment

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

Please give complexity for individual function

// Space Complexity : O(N)
// Did this code successfully run on Leetcode : Yes
// Any problem you faced while coding this : No

// Your code here along with comments explaining your approach

Class MinStack1{
Stack<Integer> stack;
Stack<Integer> minStack;
int min;

// Constructor to initialize the stack and minStack
public MinStack() {
this.min = Integer.MAX_VALUE;
this.stack = new Stack<>();
this.minStack = new Stack<>();
this.minStack.push(this.min); // Push the initial min value to the minStack
}

// Push a value onto the stack and update the minStack
public void push(int val) {

min = Math.min(min,val);
stack.push(val);
minStack.push(min);
}

// Pop a value from the stack and update the minStack
public void pop() {
stack.pop();
minStack.pop();
min=minStack.peek();
}

// Get the top value of the stack
public int top() {
return stack.peek();
}

// Get the minimum value from the minStack
public int getMin() {
return min;
}

public static void main(String args[]) {
// Create a MinStack object
MinStack minStack = new MinStack();

// Push values onto the stack
minStack.push(10);
minStack.push(20);
minStack.push(5);
minStack.push(15);

// Get the current top value and min value
System.out.println("Top: " + minStack.top()); // Should print 15
System.out.println("Min: " + minStack.getMin()); // Should print 5

// Pop a value from the stack
minStack.pop();
System.out.println("After pop, Top: " + minStack.top()); // Should print 5
System.out.println("After pop, Min: " + minStack.getMin()); // Should still print 5

// Pop another value from the stack
minStack.pop();
System.out.println("After another pop, Top: " + minStack.top()); // Should print 20
System.out.println("After another pop, Min: " + minStack.getMin()); // Should print 10
}
}

76 changes: 76 additions & 0 deletions MinStack2.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
// Time Complexity : O(N)
// Space Complexity : O(N)
// Did this code successfully run on Leetcode : Yes
// Any problem you faced while coding this : No


// Your code here along with comments explaining your approach

Class MinStack2{
Stack<Integer> stack;
Stack<Integer> minStack;
int min;

public MinStack() {
this.min = Integer.MAX_VALUE;
this.stack = new Stack<>();
this.minStack = new Stack<>();
}

// Pushes a value onto the stack and updates the min stack if necessary
// If the current value is smaller than or equal to the current min, push the old min to minStack
// and update the min to the new value
public void push(int val) {
if(min>=val){
minStack.push(min);
min=val;
}
stack.push(val);

}

// Pops the top value from the stack and updates the min stack if necessary
// If the popped value is the current minimum, pop the min value from the minStack
// and restore the previous minimum value
public void pop() {
int poppedVal = stack.pop();
if(poppedVal == min) {
min = minStack.pop();
}
}
//Get the top value of the stack
public int top() {

return stack.peek();
}

//Get the minimum value from the minStack
public int getMin() {

return min;
}

public static void main(String args[]) {
// Create a MinStack object
MinStack minStack = new MinStack();
// Push values onto the stack
minStack.push(10);
minStack.push(20);
minStack.push(5);
minStack.push(15);

// Get the current top value and min value
System.out.println("Top: " + minStack.top()); // Should print 15
System.out.println("Min: " + minStack.getMin()); // Should print 5

// Pop a value from the stack
minStack.pop();
System.out.println("After pop, Top: " + minStack.top()); // Should print 5
System.out.println("After pop, Min: " + minStack.getMin()); // Should still print 5

// Pop another value from the stack
minStack.pop();
System.out.println("After another pop, Top: " + minStack.top()); // Should print 20
System.out.println("After another pop, Min: " + minStack.getMin()); // Should print 10
}
}
7 changes: 0 additions & 7 deletions Sample.java

This file was deleted.