2011-08-22 19 views
1

我需要计算偷看中期元素也是问题陈述了实施这一方法如下: -谅解协议栈实现的问题陈述

*returns object which has the middle value among the all objects without removing it from the stack. *returns the object which has the value of following order (size()/2)+1 *e.g. *When the stack has the following values (1, 2, 5, 4, 2, 6) *this method returns 4 and doesn't remove the object.

所以我的查询是: -

应该怎么考虑位置方面的中间元素,即在对堆叠的元素进行排序之后,中间元素被获得为mid = stack[size()/2+1] 或者我应该将其视为值,即mid= max+min/2

在以上问题两个情况是正确的(在我的观点),即

stack[size()/2+1]=stack[6/2+1]=4

max+min/2=6+1/2=3.5和四舍五入将等于4

好心帮我理解问题陈述

回答

1

堆栈是一个数据结构,因此在最通用的情况下应该能够存储任何数据类型。您正在处理整数的事实只是简化了您的任务。数据结构明智的是,您考虑中间元素并且不对元素值执行任何计算(这对于数据结构而言太特定)。

看起来你想要的是第((n/2)+1)个元素,因此这个例子中的索引(n/2)处的元素。

+0

是......“在大多数情况下”,但给我的问题包含一个名为“SortableStack”的堆栈接口。 所以所有的困惑都在这里,因为名字暗示堆栈需要排序... – paul

+0

我的答案仍然存在,您可能必须在执行操作之前对底层数组进行排序。虽然有一个可排序的堆栈似乎很奇怪,因为堆栈的定义是“先进后出”。但这是你的作业规范:) –

+1

哦...知道了....可以请告诉我,如果有一种方法获得这个中间价值没有执行排序..因为排序是一项资源密集型任务,并在这个问题我需要得到只有一个值(即中间值) – paul