代码随想录算法训练营43期 | Day 4
24. 两两交换链表中的节点
解题思路
- 设置dummyHead节点并且dumyHead->next = head;
- 设置cur指向dummyHead;
- 步骤一:
使用temp保存cur->next节点和temp1保存cur->next->next->next;
令cur->next = cur->next->next;- 步骤二:
cur->next->next = temp;- 步骤三:
cur->next->next->next = temp1;- cur移动两步 cur = cur->next->next;
ListNode* swapPairs(ListNode* head) {
//定义虚拟头结点
ListNode* dummyHead = new ListNode(0);
dummyHead->next = head;
ListNode* cur = dummyHead;
while(cur->next!=nullptr&&cur->next->next!=nullptr)
{
//临时保存cur->next
ListNode* temp = cur->next;
ListNode* temp1 = cur->next->next->next;
//步骤1
cur->next = cur->next->next;
//步骤2
cur->next->next = temp;
//步骤3
cur->next->next->next = temp1;
//移动cur指针
cur = cur->next->next;
}
head = dummyHead->next;
delete dummyHead;
return head;
}
19.删除链表的倒数第N个节点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
示例:<