1. 程式人生 > >C#集合練習題(棧Stack)

C#集合練習題(棧Stack)

實現一個棧

要求實現出棧pop(),入棧push()Min返回最小值的操作的時間複雜度為o(1);
思路:要使這些操作的時間複雜度為o(1),則必須保證棧的每個元素只被遍歷一次
 

    class MyStack
    {
        Stack<int> myStack = new Stack<int>();
        Stack<int> minStcak = new Stack<int>();//存最小值的棧

        //屬性:獲取minStack的頂部元素 也就是myStack的最小值
        public int MinValue
        {
            get
            {
                return minStcak.Peek();
            }
        }
        public void Push(int value)
        {
            myStack.Push(value);

            //判斷minStack是否為空 將第一個元素新增進去
            if (minStcak.Count == 0)
            {
                minStcak.Push(value);
            }
            //如果新增進來的元素小於等於minStack的頂部元素就新增進來
            if (value <= minStcak.Peek())
            {
                minStcak.Push(value);
            }


        }
        public int Pop()
        {

            if (myStack.Peek() == minStcak.Peek())

                minStcak.Pop();

            return myStack.Pop();

        }


    }

測試類