T24 兩兩交換鍊錶中的結點

2021-10-04 10:11:16 字數 641 閱讀 5276

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...