Java 理解堆栈实现问题语句
我需要计算peek mid元素,实现此方法的问题陈述如下:-Java 理解堆栈实现问题语句,java,algorithm,data-structures,stack,Java,Algorithm,Data Structures,Stack,我需要计算peek mid元素,实现此方法的问题陈述如下:- *返回在所有对象中具有中间值的对象,而不将其从堆栈中移除。 *返回值顺序为(size()/2)+1的对象 *e、 g.*当堆栈具有以下值(1、2、5、4、2、6)*时,此方法返回4,不删除对象。 所以我的问题是:- 我应该考虑中间元素的位置,即在对堆栈的元素进行排序之后,得到中间元素为中=堆栈[ siz()/ 2+1 ] < /代码> 或者我应该考虑它的价值,即 MID= Max + MIN/2 < /P> 在上述问题中,两种情况
*返回在所有对象中具有中间值的对象,而不将其从堆栈中移除。
*返回值顺序为(size()/2)+1的对象
*e、 g.*当堆栈具有以下值(1、2、5、4、2、6)*时,此方法返回4,不删除对象。
所以我的问题是:-
我应该考虑中间元素的位置,即在对堆栈的元素进行排序之后,得到中间元素为<代码>中=堆栈[ siz()/ 2+1 ] < /代码> 或者我应该考虑它的价值,即<代码> MID= Max + MIN/2 < /P> 在上述问题中,两种情况都是正确的(在我看来)
stack[size()/2+1]=stack[6/2+1]=4
和max+min/2=6+1/2=3.5
,四舍五入等于4
请帮助我理解问题陈述堆栈是一种数据结构,因此在最一般的情况下应该能够存储任何数据类型。事实上,您正在处理ints只是简化了您的作业。从数据结构上看,考虑中间元素并不对元素值执行任何计算(对于数据结构来说太具体)是有意义的。
看起来您想要的是第((n/2)+1)个元素,因此本例中索引(n/2)处的元素。堆栈是一种数据结构,因此在最一般的情况下应该能够存储任何数据类型。事实上,您正在处理ints只是简化了您的作业。从数据结构上看,考虑中间元素并不对元素值执行任何计算(对于数据结构来说太具体)是有意义的。
看起来您想要的是第((n/2)+1)个元素,因此在本例中是索引(n/2)处的元素。yes.“在大多数通用情况下”但给我的问题包含一个名为“SortableStack”的堆栈接口。所以所有的困惑都在这里,因为名称表明堆栈需要排序……我的答案仍然成立,您可能需要在执行操作之前对底层数组进行排序。不过,有一个可排序的堆栈似乎很奇怪,因为根据定义,堆栈是“先进先出”。但这取决于你的家庭作业规格:)哦……明白了……你能告诉我,如果有一种方法可以不进行排序就得到这个中间值……因为排序是一项资源密集型任务,在这个问题中,我只需要得到一个值(即中间值),你无法避免排序来找到中间元素。此外,如果它是已排序的堆栈,则应始终保持其排序。通过将每个元素插入到正确的排序位置,并确保始终具有排序数组,可以减少对性能的影响。这将导致每个项目的O(n)插入成本。一旦你对它进行了排序,就使用我的答案中的方法。是的…“在大多数通用情况下”,但给我的问题包含一个名为“SortableStack”的堆栈接口。所以所有的困惑都在这里,因为名称表明堆栈需要排序……我的答案仍然成立,您可能需要在执行操作之前对底层数组进行排序。不过,有一个可排序的堆栈似乎很奇怪,因为根据定义,堆栈是“先进先出”。但这取决于你的家庭作业规格:)哦……明白了……你能告诉我,如果有一种方法可以不进行排序就得到这个中间值……因为排序是一项资源密集型任务,在这个问题中,我只需要得到一个值(即中间值),你无法避免排序来找到中间元素。此外,如果它是已排序的堆栈,则应始终保持其排序。通过将每个元素插入到正确的排序位置,并确保始终具有排序数组,可以减少对性能的影响。这将导致每个项目的O(n)插入成本。一旦你把它分类了,就用我答案中的方法。。