256просмотров
7.8%от подписчиков
16 марта 2026 г.
statsScore: 282
Задача: 24. Swap Nodes in Pairs Сложность: medium Учитывая связанный список, поменяйте местами каждые два соседних узла и верните его голову. Вы должны решить проблему, не изменяя значения в узлах списка (т. е. изменять можно только сами узлы). Пример:
Input: head = [1,2,3,4] Output: [2,1,4,3] 👨💻 Алгоритм: 1⃣Создаем фиктивный узел temp, указывающий на head, чтобы упростить работу с началом списка. 2⃣Пока существуют хотя бы два узла для обмена — выполняем перестановку указателей для соседней пары. 3⃣Продвигаем указатель к следующей паре. 😎 Решение:
class Solution { public: ListNode swapPairs(ListNode head) { ListNode temp = (ListNode)malloc(sizeof(ListNode)); temp->next = head; ListNode ptr = temp, swap1, *swap2; while(ptr->next && ptr->next->next) { swap1 = ptr->next; swap2 = ptr->next->next; swap1->next = swap2->next; swap2->next = swap1; ptr->next = swap2; ptr = swap1; } return temp->next; } }; Ставь 👍 и забирай 📚 Базу знаний