24. 两两交换链表中的节点
思路:
public static ListNode SwapPairs(ListNode head)
{
ListNode dummyHead = new ListNode(0, head);//虚拟头结点
ListNode cur = dummyHead;
while (cur.next != null && cur.next.next != null)//结束条件
{
ListNode tmp1 = cur.next;
ListNode tmp2 = cur.next.next.next;
cur.next = cur.next.next;//赋值顺序
cur.next.next = tmp1;
tmp1.next = tmp2;
cur = cur.next.next;
}
return dummyHead.next;
}
- 时间复杂度为O(n)
- 空间复杂度O(1)
19. 删除链表的倒数第 N 个结点
思路:
双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动&