2015-06-09 95 views

回答

2
stack(4) // returns 5th element 
stack.last // returns last element 

這些操作是恆定時間。

+0

我還發現stack.apply()。這是一回事嗎? – KaliMa

+0

是的。 ''stack(4)''實際調用''stack.apply(4)'' –

0

stack(4)收益在固定時間

至於最後一個元素第五元素 - 答案取決於哪個版本您正在使用。斯卡拉2.11.7線性時間仍在運行stack.last,因爲它是用TraversableLike實現:

def last: A = { 
    var lst = head 
     for (x <- this) 
      lst = x 
     lst 
} 

這是在版本2.12.0 fixed-M4使用IndexedSeqOptimized特質。 因此,據我的理解 - 如果您使用的是舊版本的Scala(這是發佈問題時的情況),您應該使用stack(stack.size - 1),它會在常量時間內返回最後一個元素。

相關問題