這是一個使用隊列的版本。
def iSplit(xs: List[Int]) = {
val first = scala.collection.mutable.Queue[Int]()
val second = scala.collection.mutable.Queue[Int]()
xs.grouped(2).foreach { e =>
e match {
case List(a, b) =>
second.enqueue(a, b)
first.enqueue(second.dequeue)
case List(a) =>
second.enqueue(a)
}
}
(first.toList, second.toList)
}
我們可以改變first
堆棧,在反向
def iSplit(xs: List[Int]) = {
val first = scala.collection.mutable.Stack[Int]()
val second = scala.collection.mutable.Queue[Int]()
xs.grouped(2).foreach { e =>
e match {
case List(a, b) =>
second.enqueue(a, b)
first.push(second.dequeue)
case List(a) =>
second.enqueue(a)
}
}
(first.toList.reverse, second.toList)
}
但second
問題的代價是,我們想要的東西添加到一端,從另一端刪除的東西。這不是一個堆棧,而是一個隊列。
所以我認爲你應該告訴你的教授,它與排隊更好的工作:)
你到目前爲止嘗試了什麼? – stefanobaghino
它不需要堆棧,如果當你說「迭代」,你也允許增值。請更清楚地解釋您的實際問題 –
我在測試中沒有堆疊。但教授標記了我並且堅持我使用堆棧並且它可以完成。這就是問題中提到的一切。 – user7091463