Сложность: medium
Учитывая связанный список, поменяйте местами каждые два соседних узла и верните его голову. Вы должны решить проблему, не изменяя значения в узлах списка (т. е. изменять можно только сами узлы).
Пример:
Input: head = [1,2,3,4]
Output: [2,1,4,3]
👨💻 Алгоритм:
1⃣Использовать указатели для перестановки соседних узлов.
2⃣Пройти по списку, меняя местами пары узлов.
3⃣Обновить связи так, чтобы список остался целостным.
😎 Решение:
class Solution {
function swapPairs($head) {
$dummy = new ListNode(0, $head);
$prev = $dummy;
while ($head && $head->next) {
$first = $head;
$second = $head->next;
$prev->next = $second;
$first->next = $second->next;
$second->next = $first;
$prev = $first;
$head = $first->next;
}
return $dummy->next;
}
}Ставь 👍 и забирай 📚 Базу знаний