我在一次采访中被问到:
设计一种数据结构,允许所有这些操作在恒定时间内进行
[1,22,44,56,99,98,56]的范围是98
我使用带有两个变量的自定义堆栈来设计它,
max和
min,但在弹出min或max元素后,这不起作用。
我尝试的内容:
我使用了一个包含两个额外变量max和min的堆栈:
DS
{
top, //Top of the Stack
min, //Min till now
max //Max till now
}
Push(DS, elem)
Push_Stack(DS.top, elem)
if elem < DS.min
DS.min = elem
if elem > DS.max
DS.max = elem
Range(DS)
return DS.max - DS.min
Pop(DS)
x = Pop_Stack(DS.top)
if (x == DS.min)
DS.min = Find_New_Min(DS.top) //This takes linear time using this approach
if (x == DS.max)
DS.max = Find_New_Max(DS.top)
这类似于Bryon Lo的回答,但在他发布之前,我也发表了同样的评论
维护3个堆栈
Rest是不言而喻的
push(T value)
{
if (value <= min())
{
s2.push(value);
}
if(value >= max())
{
s3.push(value);
}
s1.push(value);
}
T pop()
{
T value = s1.pop();
if (value == min())
{
s2.pop();
}
return value;
}
T min()
{
if (s2.isEmpty())
{
return MAX_VALUE;
}
else {
return s2.peek();
}
}
T max()
{
if (s3.isEmpty())
{
return MIN_VALUE;
}
else
{
return s3.peek();
}
}
实现一个包含范围函数并在内部使用三个堆栈的“堆栈”。
第一个内部堆栈将表示被推送和弹出的“真实”堆栈。
只有当新元素大于或等于其顶部的元素时,才会将第二个内部堆栈推入。
只有当新元素小于或等于其顶部的元素时,才会推送到第三个内部堆栈。
现在,当你需要计算范围时,只需看一下第二和第三个堆栈的顶部,然后做一些简单的数学运算。
每当需要从“真实”堆栈中弹出一个元素时,请检查该元素是否也在其他两个堆栈的顶部,如果是,也将其从这些堆栈中弹出。
因为你必须以相反的顺序从主堆栈中弹出项目,你永远不会错过其他两个堆栈中的任何东西。。。这意味着第二个和第三个内部堆栈的顶部始终是最大值和最小值。
我正在根据以下要求开发JMeter脚本 Http请求总数-24,Http请求总数/分钟-12,测试持续时间2min,每分钟请求之间的等待时间:60min/12req=5秒。 在我的场景中总共发生了3笔交易 添加文档(占总请求的20%) 添加文档(占总请求的80%) 更新文档(占总请求的100%) 下面是我使用过的线程组和控制器 > 终极线程组终极线程组 (2) 吞吐量控制器分配负载的百分比[24个
问题内容: 我有一个超过15000行的数据框对象,例如: 我试图找到具有特定anime_id的行。 我只是想知道此搜索是在固定时间(如字典)还是线性时间(如列表)中完成的。 问题答案: 这是一个非常有趣的问题! 我认为这取决于以下几个方面: 按索引访问单行( 索引已排序且唯一 )应具有运行时,其中 按索引访问单行( 索引不是唯一的并且未排序 )应该具有运行时 通过索引访问单行( 索引不是唯一的,并
嗨,伙计们,我需要一个关于堆栈的小帮助。Pop()函数。我知道堆栈可以一个接一个地弹出元素,但是我需要不止一个元素才能弹出。例如,我在堆栈中有5个元素(4,3,2,1,0),现在我想弹出前3个或2个元素,直到堆栈索引达到1或2。现在我有“for”循环,它不能正常工作: 有人能帮我吗,让他弹出一定范围的元素?谢谢!
我和我的朋友,我们正在制作某种项目,我们将GIT用于我们的版本控制软件,但是在我从gitlab中提取他的代码,并进行了一些更改并提交了这些更改后,我想推回gitlab,但是当那时,这个警告和错误: 有什么办法吗?我试图通过f旗(强制)推动回购,但仍然不起作用。。。
问题内容: 我有一个表单,用户需要输入日期和时间(2个不同的字段),并且时间不能超过12小时。因此,当时间超过12小时时,我想添加一条警告消息(很可能是弹出警报)。我正在使用JSF和Java。请帮帮我! 问题答案:
我需要在一定的时间范围内进行查询, 首先,我想做一个查询,比如 结果是 有人能指出我做错了什么吗? 第二,我没有做这个例子https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-daterange-aggregation.html 上面的例子如何适合我的应用,谢谢 杰夫 此