leetcode 24 - 兩兩交換鏈表中的節點(遞歸解法)


題目

24. 兩兩交換鏈表中的節點

題解

整個過程都是不停地交換節點,因此可以嘗試通過遞歸來解決。

遞歸解法要先搞清以下三個內容

  1. 返回值
  2. 調用單元做了什么
  3. 終止條件

在本題中:

  1. 返回值:交換完成的子鏈表head
  2. 調用單元做了什么:設需要交換的兩個點為 head 和 next,head 連接后面交換完成的子鏈表,next 連接 head,完成交換
  3. 終止條件:head為空指針或者next為空指針,也就是當前無節點或者只有一個節點,無法進行交換
ListNode* swapPairs(ListNode* head) {
    if (head == NULL || head->next == NULL) {
        return head;
    }
    
    ListNode *next = head->next;
    head->next = swapPairs(next->next);
    next->next = head;
    return next;
}

參考

畫解算法:24. 兩兩交換鏈表中的節點

發表地址

博客園:leetcode 24 - 兩兩交換鏈表中的節點(遞歸解法)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM