ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

Õ»ºÍ¶ÓÁÐ(Ò»)
2014-11-24 02:20:18 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:1210´Î
Tags£º¶ÓÁÐ

Ŀ¼£º
1.Éè¼Æº¬minº¯ÊýµÄÕ»£¬ÒªÇómin¡¢pushºÍpopµÄʱ¼ä¸´ÔӶȶ¼ÊÇo(1)¡£
2.Éè¼Æº¬minº¯ÊýµÄÕ»µÄÁí½â
3.ÓÃÁ½¸öջʵÏÖ¶ÓÁÐ
4.ÓÃÁ½¸ö¶ÓÁÐʵÏÖÕ»


5.Õ»µÄpush¡¢popÐòÁÐÊÇ·ñÒ»ÖÂ
6.µÝ¹é·´×ªÒ»¸öÕ»£¬ÒªÇó²»µÃÖØÐÂÉêÇëÒ»¸öͬÑùµÄÕ»£¬¿Õ¼ä¸´ÔÓ¶Èo(1)
7.¸øջşöÐò
8..ÈçºÎÓÃÒ»¸öÊý×éʵÏÖÁ½¸öÕ»
9..ÈçºÎÓÃÒ»¸öÊý×éʵÏÖÈý¸öÕ»


1.Éè¼Æº¬minº¯ÊýµÄÕ»£¬ÒªÇómin¡¢pushºÍpopµÄʱ¼ä¸´ÔӶȶ¼ÊÇo(1)¡£
Ë㷨˼Ï룺ÐèÒªÉè¼ÆÒ»¸ö¸¨ÖúÕ»£¬ÓÃÀ´´æ´¢µ±Ç°Õ»ÖÐÔªËصÄ×îСֵ¡£ÍøÉÏÓÐÈË˵´æ´¢µ±Ç°Õ»ÖÐÔªËصÄ×îСֵµÄËùÔÚλÖã¬ËäÈ»ÄܽÚÊ¡¿Õ¼ä£¬ÕâÆäʵÊDz»¶ÔµÄ£¬ÒòΪÎÒÔÚµ÷ÓÃMinº¯ÊýµÄʱºò£¬Ö»Äܵõ½Î»Ö㬻¹Òª¶Ô´æ´¢ÔªËصÄÕ»²»¶ÏµÄpop£¬²ÅÄܵõ½×îСֵ¡ª¡ªÊ±¼ä¸´ÔÓ¶Èo(1)¡£
ËùÒÔ£¬»¹ÊÇÔÚ¸¨ÖúÕ»Öд洢ԪËØ°É¡£
´ËÍ⣬»¹Òª¶îÍâ×¢ÒâPush²Ù×÷£¬µÚÒ»¸öÔªËز»ÓñȽϣ¬×Ô¶¯³ÉΪ×îСֵÈëÕ»¡£ÆäËüÔªËØÿ´Î¶¼ÒªºÍÕ»¶¥ÔªËرȽϣ¬Ð¡µÄÄǸö·Åµ½Õ»¶¥¡£


public class NewStack
{
private Stack dataStack;
private Stack mindataStack;
public NewStack()
{
dataStack = new Stack();
mindataStack = new Stack();
}
public void Push(int element)
{
dataStack.Push(element);
if (mindataStack.Count == 0)
mindataStack.Push(element);
else if (element <= (int)mindataStack.Peek())
mindataStack.Push(element);
else //(element > mindataStack.Peek)
mindataStack.Push(mindataStack.Peek());
}


public int Pop()
{
if (dataStack.Count == 0)
throw new Exception(¡°The stack is empty¡±);


mindataStack.Pop();
return (int)dataStack.Pop();
}
public int Min()
{
if (dataStack.Count == 0)
throw new Exception(¡°The stack is empty¡±);


return (int)mindataStack.Peek();
}
}


2.Éè¼Æº¬minº¯ÊýµÄÕ»µÄÁí½â
»°Ëµ£¬ºÍÇà²ËÁ³´ô¾ÃÁË£¬¾ÍմȾÁËÉϺ£Ð¡ÊÐÃñÒâʶ£¬ÔÙ¼ÓÉÏÔ­±¾ÎҾͺܿÙÃŶù£¬ÓÚÊǶÔÓÚÉÏÒ»ÌâÄ¿£¬ÎÒ°ÑÒ»¸öÕ»µ±³ÉÁ½¸öÓ㬾ÍÊÇ˵£¬Ã¿´Îpush£¬ÏÈÈëÕ¾µ±Ç°ÔªËØ£¬È»ºóÈëÕ»µ±Ç°Õ»ÖÐ×îСԪËØ£»popÔòÿ´Îµ¯³ö2¸öÔªËØ¡£
Ëã·¨´úÂëÈçÏÂËùʾ£¨ÕâÀï×îСԪËØλÓÚµ±Ç°ÔªËØÖ®ÉÏ£¬ÎªÁËÏ´αȽϷ½±ã£©£º
public class NewStack
{
private Stack stack;
public NewStack()
{
stack = new Stack();
}
public void Push(int element)
{
if (stack.Count == 0)
{
stack.Push(element);
stack.Push(element);
}
else if (element <= (int)stack.Peek())
{
stack.Push(element);
stack.Push(element);
}
else //(element > stack.Peek)
{
object min = stack.Peek();
stack.Push(element);
stack.Push(min);
}
}
public int Pop()
{
if (stack.Count == 0)
throw new Exception(¡°The stack is empty¡±);
stack.Pop();
return (int)stack.Pop();
}
public int Min()
{
if (stack.Count == 0)
throw new Exception(¡°The stack is empty¡±);
return (int)stack.Peek();
}
}


Ö®ËùÒÔ˵ÎÒÕâ¸öËã·¨±È½ÏßµÃÅ£¬ÊÇÒòΪÎÒֻʹÓÃÁËÒ»¸öÕ»£¬¿Õ¼ä¸´ÔÓ¶Èo(N)£¬½ÚÊ¡ÁËÒ»°ëµÄ¿Õ¼ä£¨Ëã·¨1µÄ¿Õ¼ä¸´ÔÓ¶Èo(2N)£©¡£


3.ÓÃÁ½¸öջʵÏÖ¶ÓÁÐ
ʵÏÖ¶ÓÁУ¬¾ÍҪʵÏÖËüµÄ3¸ö·½·¨£ºEnqueue£¨Èë¶Ó£©¡¢Dequeue£¨³ö¶Ó£©ºÍPeek£¨¶ÓÍ·£©¡£
1£©stack1´æµÄÊÇÿ´Î½øÀ´µÄÔªËØ£¬ËùÒÔEnqueue¾ÍÊǰѽøÀ´µÄÔªËØpushµ½stack1ÖС£
2£©¶ø¶ÔÓÚDequeue£¬Ò»¿ªÊ¼stack2Êǿյģ¬ËùÒÔÎÒÃÇ°Ñstack1ÖеÄÔªËØÈ«¶¼popµ½stack2ÖУ¬ÕâÑùstack2µÄÕ»¶¥¾ÍÊǶÓÍ·¡£Ö»Òªstack2²»Îª¿Õ£¬ÄÇôÿ´Î³ö¶Ó£¬¾ÍÏ൱ÓÚstack2µÄpop¡£
3£©½ÓÏÂÀ´£¬Ã¿Èë¶ÓÒ»¸öÔªËØ£¬ÈÔÈ»pushµ½stack1ÖС£Ã¿³ö¶ÓÒ»¸öÔªËØ£¬Èç¹ûstack2²»Îª¿Õ£¬¾Í´Óstack2ÖÐpopÒ»¸öÔªËØ£»Èç¹ûstack2Ϊ¿Õ£¬¾ÍÖظ´ÉÏÃæµÄ²Ù×÷¡ª¡ª°Ñstack1ÖеÄÔªËØÈ«¶¼popµ½stack2ÖС£
4£©Peek²Ù×÷£¬ÀàËÆÓÚDequeue£¬Ö»ÊDz»ÐèÒª³ö¶Ó£¬ËùÒÔÎÒÃǵ÷ÓÃstack2µÄPeek²Ù×÷¡£µ±È»£¬Èç¹ûstack2Ϊ¿Õ£¬¾Í°Ñstack1ÖеÄÔªËØÈ«¶¼popµ½stack2ÖС£
5£©×¢Òâ±ß½çµÄ´¦Àí£¬Èç¹ûstack2ºÍstack1¶¼Îª¿Õ£¬²ÅµÈÓÚ¶ÓÁÐΪ¿Õ£¬´Ëʱ²»ÄܽøÐÐPeekºÍDequeue²Ù×÷¡£
°´ÕÕÉÏÊö·ÖÎö£¬Ë㷨ʵÏÖÈçÏ£º
public class NewQueue
{
private Stack stack1;
private Stack stack2;
public NewQueue()
{
stack1 = new Stack();
stack2 = new Stack();
}
public void Enqueue(int element)
{
stack1.Push(element);
}
public int Dequeue()
{
if (stack2.Count == 0)
{
if (stack1.Count == 0)
throw new Exception(¡°The queue is empty¡±);
else
while (stack1.Count > 0)
stack2.Push(stack1.Pop());
}
return (int)stack2.Pop();
}
public int Peek()
{
if (stack2.Count == 0)
{
if (stack1.Count == 0)
throw new Exception(¡°The queue is empty¡±);
else
while (stack1.Count > 0)
stack2.Push(stack1.Pop());
}
return (int)stack2.Peek();
}
}


4.ÓÃÁ½¸ö¶ÓÁÐʵÏÖÕ»
Õâ¸öÂ¾ÍÒªqueue1ºÍqueue2ÂÖÁ÷´æ´¢Êý¾ÝÁË¡£Õâ¸ö¡°ÂÖÁ÷¡±·¢ÉúÔÚPopºÍPeekµÄʱºò£¬¼ÙÉè´ËʱÎÒÃÇ°ÑËùÓÐÊý¾Ý´æÔÚqueue1ÖУ¨´Ëʱqueue2Ϊ¿Õ£©£¬ÎÒÃÇ°Ñqueue1µÄn-1¸öÔªËطŵ½queue2ÖУ¬queueÖÐ×îºóÒ»¸öÔªËؾÍÊÇÎÒÃÇÏëÒªpopµÄÔªËØ£¬´Ëʱqueue2´æÓÐn-1¸öÔªËØ£¨queue1Ϊ¿Õ£©¡£
ÖÁÓÚPeek£¬ÔòÊÇÿ´ÎתÒÆn¸öÊý¾Ý£¬ÔÙתÒÆ×îºóÒ»¸öÔªËصÄʱºò£¬½«Æä¼Æϲ¢·µ»Ø¡£
ÄÇôPushµÄ²Ù×÷£¬ÔòÐèÒªÅжϵ±Ç°queue1ºÍqueue2ÄĸöΪ¿Õ£¬½«ÐÂÔªËطŵ½²»Îª¿ÕµÄ¶ÓÁÐÖС£
public class NewStack
{
private Queue queue1;
private Queu

Ê×Ò³ ÉÏÒ»Ò³ 1 2 3 ÏÂÒ»Ò³ βҳ 1/3/3
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£ºOralceÊý¾Ý¿â±ÊÊÔÌâÒ»Ì× ÏÂһƪ£ºJava³ÌÐòÔ±³£¼û±ÊÊÔÌâÖ®Öм¶¼ò´ðÌâ

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿