Skip to content

24. Swap Nodes in Pairs

难度: Medium

刷题内容

原题连接

  • https://leetcode-cn.com/problems/swap-nodes-in-pairs/

内容描述

``` 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3. 说明:

你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 ```

解题方案

思路 1

链表反转
ListNode* swapPairs(ListNode* head) {
    if(head==NULL||head->next==NULL)
        return head;

    ListNode* slow=head;
    ListNode* fast=head->next;
    ListNode* pre=new ListNode(0);
    ListNode* ans = pre;
    while(slow&&fast){
        slow->next = fast->next;
        fast->next = slow;
        pre->next = fast;
        if(slow->next==NULL||slow->next->next==NULL){
            break;
        }
        fast = slow->next->next;
        pre = slow;
        slow = slow->next; 
    }
    return ans->next;
}


回到顶部