【发布时间】:2012-01-16 07:10:58
【问题描述】:
我必须实现一种数组或序列或列表,它支持循环转发和回绕元素的最便宜的方式。看这个例子:
Original sequence: 1 2 3 4 5
Forwarded once: 5 1 2 3 4
Forwarded twice: 4 5 1 2 3
反向绕组相同但相反。什么是最便宜和最具 Scala 风格的实现方式?在 Java 中,我可以使用 LinkedList,它会做得很好......但是,我找不到 Scala 的任何明确答案。
此外,它还必须易于按索引替换任何给定元素,如在 LinkedList 中。
更新:
对于最快但不那么惯用的算法变体(你知道什么时候需要它),请参阅 Petr Pudlák 的回答!!!
【问题讨论】:
-
this 可能对你有用
-
我认为“转桶”可能比“流通”更能表达您的意图...
-
@fortran 我只从逻辑电路中知道这个术语。因此它是一个特定的实现。你确定这适用于变速操作?
-
@ziggystar 我认为你是对的,我可能混淆了循环移位的硬件术语......无论如何,动词应该是 shift,而不是 circulate (这就是我在标题中发现的奇怪之处)。干杯。