【24】Swap Nodes in Pairs

    xiaoxiao2025-12-08  5

    Given a linked list, swap every two adjacent nodes and return its head.

    For example, Given 1->2->3->4, you should return the list as 2->1->4->3.

    Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

    比较简单的做法是递归自己,时间是4ms。更快的做法是设4个指针换位置,时间为0ms,但是代码要麻烦一些

    ListNode* swapPairs(ListNode* head) { if(!head || !head->next)return head; ListNode* p1=head; ListNode* p2=head->next; p1->next=swapPairs(p2->next); p2->next=p1; return p2; } ListNode* swapPairs(ListNode* head) { if(!head||!(head->next))return head; ListNode* p1=head; ListNode* p2=p1->next; ListNode* p3=p2->next; ListNode* p4=NULL; if(p3)p4=p3->next; ListNode* newHead=p2; while(p1 && p2) { if(p3&&p4) { p2->next=p1; p1->next=p4; p1=p3; p2=p4; if(p4)p3=p4->next; else p3=NULL; if(p3)p4=p3->next; else p4=NULL; } else{ p2->next=p1; p1->next=p3; if(p3)p3->next=NULL; break; } } return newHead; }

    转载请注明原文地址: https://ju.6miu.com/read-1304724.html
    最新回复(0)