设计包含min函数的栈
【摘要】
2.设计包含min函数的栈。 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。 要求函数min、push以及pop的时间复杂度都是O(1)。
思路:利用辅助栈存储当前栈输入顺序的递减序列
看下图:
using System;using System.Collections.Generic;using System.Linq;using ...
2.设计包含min函数的栈。
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
思路:利用辅助栈存储当前栈输入顺序的递减序列
看下图:
-
using System;
-
using System.Collections.Generic;
-
using System.Linq;
-
using System.Text;
-
-
namespace program
-
{
-
class Program
-
{
-
int[] stack = new int[1000];
-
int[] minstack= new int[1000];
-
int pos=-1;
-
int minpos=-1;
-
-
void push(int n)
-
{
-
-
if (pos == -1)
-
{
-
minstack[++minpos] = n;
-
stack[++pos] = n;
-
}
-
else
-
{
-
if (n < =minstack[minpos])
-
{
-
minstack[++minpos] = n;
-
stack[++pos] = n;
-
}
-
else
-
{
-
//minstack[minpos + 1] = minstack[minpos];
-
//minpos = minpos + 1;
-
stack[++pos] = n;
-
}
-
}
-
// pos =pos+1;
-
}
-
void pop()
-
{
-
-
Console.Write(stack[pos]);
-
if (stack[pos] <= minstack[minpos])
-
{
-
minpos --;
-
}
-
-
pos--;
-
-
}
-
void min()
-
{
-
if (minpos == -1)
-
{
-
minpos = 0;
-
Console.WriteLine(" 已经没有了哦");
-
return;
-
}
-
else
-
Console.WriteLine(" 当前最小值是: "+minstack[minpos]);
-
-
}
-
-
static void Main(string[] args)
-
{
-
Program p = new Program();
-
int n;
-
while ((n=Convert.ToInt32(Console.ReadLine()))!=0)
-
{
-
p.push(n);
-
}
-
while (p.pos!=-1)
-
{
-
p.pop();
-
p.min();
-
}
-
-
Console.ReadLine();
-
}
-
}
-
}
-
文章来源: gamwatcher.blog.csdn.net,作者:香菜聊游戏,版权归原作者所有,如需转载,请联系作者。
原文链接:gamwatcher.blog.csdn.net/article/details/7040278
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)