数据结构与算法作业14

Leetcode155

题目

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

分析

已知:无。。。目标:设计出一个支持push,pop,top,操作的最小元素的栈。

解法一

这题不动脑子就直接敲一个他要啥操作我们就操作出啥的代码来。

public class MinStack 
{    
	Stack<int> s = new Stack<int>();    
	Stack<int> mS = new Stack<int>();    
	/** initialize your data structure here. */    
	public MinStack()     
	{            
	}        
	public void Push(int x)     
	{       
	s.Push(x);        
	if(mS.Count==0)        
	{            
		mS.Push(x);        
	}        
	else        
	{            
		if(mS.Peek()>=x)            
		{                
			mS.Push(x);            
		}        
	}    
	}        
	public void Pop()     
	{        
		if(s.Count==0)        
		{            
			return;        
		}        
		int i=s.Peek();        
		s.Pop();        
		if(mS.Peek()==i)        
		{            
			mS.Pop();        
		}    
	}        
	public int Top()     
	{        
		return s.Peek();           
	}        
	public int GetMin()     
	{        
		return mS.Peek();    
	}
}

效果还挺好
在这里插入图片描述

解法二

由于我懒所有有了以下直接调用已有的懒惰之举

public class MinStack {

   private Stack<int> myStack;
        public MinStack()
        {
            myStack = new Stack<int>();
        }

        public void Push(int x)
        {
            myStack.Push(x);
        }

        public void Pop()
        {
            myStack.Pop();
        }

        public int Top()
        {
            return myStack.FirstOrDefault();
        }

        public int GetMin()
        {
            return myStack.Min();
        }
}

效果感人
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值