다음은 대기열을 사용하는 버전입니다.
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)
}
우리는 역
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
에 대한 문제의 비용으로, 스택에 first
을 변경할 수 있습니다 우리가 한 말에 일을 추가하고 다른 쪽 끝에서 사물을 제거 할 것입니다 . 스택이 아니라 대기열입니다.
교수님 께 교수님 께 큐와 더 잘 어울리는 것을 말하면 좋겠다고 생각합니다.
지금까지 무엇을 시도 했습니까? – stefanobaghino
스택이 필요하지 않습니다. "반복"이라고 말하면 vars도 허용됩니다. 실제 문제를 더 명확하게 설명하십시오. –
테스트에서 스택을 사용하지 않았습니다. 그러나 교수님은 저를 덜 표시했고 스택을 사용하여 그것을하고 그것을 할 수 있다고 주장했습니다. 그리고 그것이 그 질문에서 언급 된 전부입니다. – user7091463