LeetCode 24. 两两交换链表中的节点(递归+循环)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 24. 两两交换链表中的节点(递归+循环)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給定一個鏈表,兩兩交換其中相鄰的節點,并返回交換后的鏈表。
你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。
示例: 給定 1->2->3->4, 你應該返回 2->1->4->3.2. 解題
2.1 遞歸
class Solution { public:ListNode* swapPairs(ListNode* head) {if(!head || !head->next)return head;ListNode *hn = head->next;head->next = swapPairs(head->next->next);hn->next = head;return hn;} };2.2 循環
class Solution { public:ListNode* swapPairs(ListNode* head) {if(!head || !head->next)return head;ListNode *hn = head->next, *hnn = head->next->next;ListNode *newHead = hn, *prev = NULL;while(head && hn){if(prev)prev->next = hn;hnn = hn->next;hn->next = head;head->next = hnn;prev = head;head = head->next;if(head)hn = head->next;elsehn = NULL;}return newHead;} };總結
以上是生活随笔為你收集整理的LeetCode 24. 两两交换链表中的节点(递归+循环)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1080. 根到叶路径
- 下一篇: LeetCode 129. 求根到叶子节