case1思想:迭代實現,相當於將原鍊錶兩兩劃分並逆置(當子鍊錶中含有兩個節點時才進行逆置,否則直接拼接),再將逆置後的子鍊錶兩兩拼接
注意這題不能用分治思想(二路歸併)
class solution
//逆置相鄰的兩個結點
head = second.next;
second.next = first;
first.next = null;
//拼接逆置後的結點
if(pretail!=null)
pretail = first;
}if(head!=null)
return newhead;
}}
case2 遞迴實現:要讓整個鍊錶兩兩交換順序,我先每次兩個兩個的交換,如果發現還剩有未交換的則在去執行一遍兩兩交換
class solution else
return second;
}if(head==null||head.next==null)return head;
return exchangenode(head,head.next);
}}
24 兩兩交換鍊錶中的結點
給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 給定 1 2 3 4,你應該返回 2 1 4 3.這個問題存在子問題。去掉頭兩個結點之後仍然是相同的一類問題,因此可以交換頭兩個結點,剩餘結點遞迴處理。if head hea...
LeetCode 24 兩兩交換鍊錶中的結點
給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 給定 1 2 3 4,你應該返回 2 1 4 3.只交換值 遞迴交換結點 按照要求,不允許只交換值,然後我就先測試一下只交換值,是否能通過。結果通過了。看來這個檢測不到位,或...
詳細解析24兩兩交換鍊錶中的結點
解題思路 definition for singly linked list.public class listnode listnode int val listnode int val,listnode next class solution return head.next 定義乙個newhe...