我在Scala中使用了一個可變的ArrayStack
,但不知道如何高效地(恆定時間)訪問最後一個元素(以及倒數第二個元素),而無需從堆棧中彈出項目。可以訪問元素嗎?有效檢索Scala中ArrayStack的倒數第二個元素?
2
A
回答
2
stack(4) // returns 5th element
stack.last // returns last element
這些操作是恆定時間。
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)
,它會在常量時間內返回最後一個元素。
相關問題
- 1. 取出倒數第二個元素 - Prolog
- 2. 附加到倒數第二個元素
- 3. 獲取倒數第二個元素
- 4. 選擇倒數第二個元素
- 5. 需要檢索SQL中的倒數第二個單詞
- 6. 如何獲得列表中的倒數第二個元素?
- 7. 在Jinja2迭代中獲取倒數第二個元素
- 8. 如何從列表中查找倒數第二個元素?
- 9. 如何從multi_index_container中獲取倒數第二個元素
- 10. 加入第一+最後一個元素,第二+倒數第二個元素等爲載體
- 11. scala和遍歷列表中的所有第一元素和第二元素
- 12. 返回倒數第二個列表元素在共同的lisp
- 13. C#的倒數第二個
- 14. Scala - 將列表中的每個第二個元素加倍
- 15. 從MySQL表檢索倒數第二個記錄
- 16. STL列表訪問倒數第二個元素
- 17. 斯卡拉折左找到倒數第二個元素
- 18. 插入列表元素在倒數第二個位置
- 19. C++ deque迭代到倒數第二個元素
- 20. sas倒數第二個&syserrortext
- 21. 最後和有時倒數第二個
- 22. Scala:給定一個scala.xml.Node,獲取第二個(或第n個)子元素的最有效方法是什麼?
- 23. 如何檢查2D數組的所有第一個和第二個元素?
- 24. 檢索數組的第二個元素爲每個文檔 - MongoDB的
- 25. 檢查section元素中的第二個子元素是否爲數字
- 26. 無法返回JSON數組對象的倒數第二個元素的值
- 27. 迭代一個循環直到2D矢量的倒數第二個元素
- 28. SQL查詢:倒數第二倒數第三倒數(微軟SQL)
- 29. 只有第一個元素中搜索
- 30. 找到第二個出現元素的數組的索引
我還發現stack.apply()。這是一回事嗎? – KaliMa
是的。 ''stack(4)''實際調用''stack.apply(4)'' –