Решение задачи

Сложность по времени - O(n)

Сложность по памяти - O(n)

Задача решена двумя способами в методе контроллера RGDialogsController.