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