Сложность: medium
Вам дан неизменяемый связный список, распечатайте все значения каждого узла в обратном порядке с помощью следующего интерфейса: ImmutableListNode:Интерфейс неизменяемого связанного списка, вам дана голова списка. Для доступа к связанному списку необходимо использовать следующие функции (напрямую к ImmutableListNode обращаться нельзя): ImmutableListNode.printValue(): Выводит значение текущего узла. ImmutableListNode.getNext(): Возвращает следующий узел. Входные данные даются только для внутренней инициализации связанного списка.Вы должны решить эту задачу, не изменяя связанный список. Другими словами, вы должны работать со связанным списком, используя только упомянутые API.
Пример:
Input: head = [1,2,3,4]
Output: [4,3,2,1]
👨💻 Алгоритм:
1⃣Используйте рекурсию для достижения конца связного списка.
2⃣На обратном пути рекурсии распечатайте значение каждого узла.
3⃣Обратный порядок достигается благодаря природе рекурсии (стек вызовов).
😎 Решение:
protocol ImmutableListNode {
func printValue()
func getNext() -> ImmutableListNode?
}
class Solution {
func printLinkedListInReverse(_ head: ImmutableListNode?) {
if let next = head?.getNext() {
printLinkedListInReverse(next)
}
head?.printValue()
}
}Ставь 👍 и забирай 📚 Базу знаний