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 mainStackStack <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());}elseminStack.Push(value);}//Returns minimum value from newStack in O(1) Timeint 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 ...