2011-08-22 48 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