...

/

Solution Review: min() Function Using a Stack

Solution Review: min() Function Using a Stack

This review provides a detailed analysis to solve the min() function using a stack challenge.

We'll cover the following...

Solution: A two stack class

Press + to interact
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace chapter_4
{
class newStack
{
//We will use two stacks mainStack to hold origional values
//and minStack to hold minimum values. Top of minStack will always
//be the minimum value from mainStack
Stack <int> mainStack;
Stack<int> minStack;
public newStack(int size)
{
mainStack = new Stack<int>(size);
minStack = new Stack<int>(size);
}
//Removes and returns value from newStack
//1. Pop element from minStack to make it sync with mainStack.
//2. Pop element from mainStack and return that value.
int pop()
{
minStack.Pop();
return mainStack.Pop();
}
//Pushes values into newStack
//1. Push value in mainStack and check value with the top value of minStack
//2. If value is greater than top, then push top in minStack
//else push value in minStack.
void push(int value)
{
mainStack.Push(value);
if ( (minStack.Count != 0) && (value > minStack.Peek()) )
{
minStack.Push(minStack.Peek());
}
else
minStack.Push(value);
}
//Returns minimum value from newStack in O(1) Time
int min()
{
return minStack.Peek();
}
static void Main(string[] args)
{
newStack stack = new newStack(6);
stack.push(5);
stack.push(2);
stack.push(4);
stack.push(1);
stack.push(3);
stack.push(9);
Console.WriteLine(stack.min());
stack.pop();
stack.pop();
stack.pop();
Console.WriteLine(stack.min());
return ;
}
}
}

This is a smart ...