In pratica si tratta di una implementazione di tipo LIFO: Last In First Out.
A questo punto penso tu debba usare un for al contrario. Il consumo di risorse sarebbe uguale a quando si scorre l'array con un for "incrementale".
Anzichè andare avanti, vai indietro (e ti associ le variabili del caso).
Al massimo è il codice che è più lunghetto, perchè anzichè dare un solo comando (che comunque ne contiene altri al suo interno) dovrai implementare il for, l'associazione ecc.