鍊錶 LeetCode143 重排鍊錶

2021-09-02 19:16:40 字數 1013 閱讀 7501

題目

給定乙個單鏈表 l:l0→l1→…→ln-1→ln ,

將其重新排列後變為: l0→ln→l1→ln-1→l2→ln-2→…

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

示例 1:

給定鍊錶 1->2->3->4, 重新排列為 1->4->2->3.

示例 2:

給定鍊錶 1->2->3->4->5, 重新排列為 1->5->2->4->3.

思路

分三步:

1.找到鍊錶的中間位置拆分鍊錶。

2.後乙個鍊錶反轉

3.前乙個鍊錶和後乙個鍊錶間隔插入

**

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution

//找中間結點

listnode a=head;

listnode b=head;

while(true)

a=a.next;

b=b.next.next;

}//拆分

listnode aa=a.next;

a.next=null;

//第二個鍊錶反轉

if(aa.next==null)else

bf.next=f.next;

f.next=aa;

aa=f;f=bf.next;}}

//間隔插入

listnode h=head;

while(true)

listnode aaa=aa.next;

aa.next=h.next;

h.next=aa;

aa=aaa;

h=h.next.next;}}

}

Leetcode 143 重排鍊錶

給定乙個單鏈表 l l0 l1 l n 1 ln 將其重新排列後變為 l0 l n l1 l n 1 l2 l n 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。解題思路 前一半 0,size 1 2 的結點位址進入佇列,先進先出,後一半 size 1 2,size 的結點入棧,...

LeetCode 143 重排鍊錶

給定乙個單鏈表 l l0 l1 l n 1 ln 將其重新排列後變為 l0 l n l1 l n 1 l2 l n 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。解題思路 首先想到的是找到要插入的元素,壓入堆疊,彈出時剛好為期望的順序,然後插入對應位置。再換一種思路,找到待插入節...

leetcode143 重排鍊錶

給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 5,重新排列為 1 5 2...