24 兩兩交換鍊錶中的結點

2022-07-02 11:30:19 字數 629 閱讀 9503

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。

你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

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

這個問題存在子問題。去掉頭兩個結點之後仍然是相同的一類問題,因此可以交換頭兩個結點,剩餘結點遞迴處理。

if(!head||!head->next) return head;

listnode*temp=head->next;

temp->next=head;

return temp;

}常規做法,遍歷結點。鍊錶中交換結點需要同時顧前和顧後,需要有乙個pre指標指向兩結點之前的乙個結點

模型:pre->l1->l2->rest (l1,l2為待交換的兩個結點)

if(!head||!head->next) return head;

listnode*l1=head,*l2=head->next,*dummy=new listnode(-1),*pre=dummy;

while(l1&&l1->next)

return dummy->next;

}

LeetCode 24 兩兩交換鍊錶中的結點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 給定 1 2 3 4,你應該返回 2 1 4 3.只交換值 遞迴交換結點 按照要求,不允許只交換值,然後我就先測試一下只交換值,是否能通過。結果通過了。看來這個檢測不到位,或...

T24 兩兩交換鍊錶中的結點

case1思想 迭代實現,相當於將原鍊錶兩兩劃分並逆置 當子鍊錶中含有兩個節點時才進行逆置,否則直接拼接 再將逆置後的子鍊錶兩兩拼接 注意這題不能用分治思想 二路歸併 class solution 逆置相鄰的兩個結點 head second.next second.next first first....

詳細解析24兩兩交換鍊錶中的結點

解題思路 definition for singly linked list.public class listnode listnode int val listnode int val,listnode next class solution return head.next 定義乙個newhe...