How to delete the middle element from an ArrayDeque in Scala

1 Answer

0 votes
import scala.collection.mutable.ArrayDeque

def deleteMiddle[T](stack: ArrayDeque[T]): Unit = {
  if (stack.isEmpty) return

  val mid = stack.length / 2
  deleteKth(stack, mid)
}

private def deleteKth[T](stack: ArrayDeque[T], k: Int): Unit = {
  if (k == 0) {
    stack.removeLast()   // remove the middle element
    
    return
  }

  val top = stack.removeLast()
  deleteKth(stack, k - 1)
  
  stack.append(top)      // restore elements
}

@main def run(): Unit = {
  val st = ArrayDeque(1, 2, 3, 4, 5, 6, 7)
  
  deleteMiddle(st)
  
  println(st) 
}



/*
run:

ArrayDeque(1, 2, 3, 5, 6, 7)

*/

 



answered Dec 24, 2025 by avibootz
...