LeetCode 24. 兩兩交換鏈表中的節點(Swap Nodes in Pairs)


 

題目描述

 

給定一個鏈表,兩兩交換其中相鄰的節點,並返回交換后的鏈表。

示例:

給定 1->2->3->4, 你應該返回 2->1->4->3.

說明:

  • 你的算法只能使用常數的額外空間。
  • 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

 

解題思路

 

利用遞歸的思想,依次交換鏈表中的節點對。具體對於每個節點來說:

  • 若該節點為NULL,則直接返回NULL
  • 若該節點的下一個節點為NULL,則直接返回該節點
  • 交換該節點與下一個節點,利用輔助指針記錄該節點的下一個節點,並遞歸的交換接下來的節點對

 

代碼

 

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* swapPairs(ListNode* head) {
12         if(!head) return NULL;
13         if(!head->next) return head;
14         ListNode* temp=head->next;
15         head->next=swapPairs(temp->next);
16         temp->next=head;
17         return temp;
18     }
19 };

 


免責聲明!

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



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