Сложность: medium
Дан односвязный список.
Нужно поменять местами каждые два соседних узла.
Нельзя менять значения, только сами узлы.
Пример:
Input: head = [1,2,3,4]
Output: [2,1,4,3]
👨💻 Алгоритм:
1️⃣ Базовый случай: если
head пуст или в списке только один узел — возвращаем head как есть. 2️⃣ Рекурсивно вызываем
swapPairs от head.next.next, чтобы поменять местами последующие пары. 3️⃣ Меняем местами текущую пару:
- Пусть
p = head.next -
p.next = head — связываем второй узел с первым -
head.next = t — первый узел указывает на результат рекурсивного вызова - Возвращаем
p — он становится новым «головой» текущей пары😎 Решение:
var swapPairs = function (head) {
if (!head || !head.next) {
return head;
}
const t = swapPairs(head.next.next);
const p = head.next;
p.next = head;
head.next = t;
return p;
};Ставь 👍 и забирай 📚 Базу знаний
