LeetCode 143 重排鍊錶

2021-10-06 16:26:07 字數 2235 閱讀 6883

給定乙個單鏈表 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.

遍歷鍊錶求表長,然後申請乙個同樣大小的陣列,依次把鍊錶元素存入陣列

在陣列中完成鍊錶的重連即可。

/**

* definition for singly-linked list.

* public class listnode

* listnode(int val)

* listnode(int val, listnode next)

* }*/class

solution

int n =0;

listnode cur = head;

while

(cur!=null)

listnode[

] arr =

newlistnode

[n];

cur = head;

for(

int k=

0;k)int i =

0,j = arr.length-1;

while

(iarr[j]

.next = arr[i]

; j--;}

arr[i]

.next = null;

}}

尋找鍊錶的中間結點

把鍊錶右半部分逆序

合併左右鍊錶即可。

例子: 1 -> 2 -> 3 -> 4 -> 5 -> 6

第一步,根據中間結點將鍊錶拆分成左右兩個鍊錶

1 -> 2 -> 3

4 -> 5 -> 6

第二步,將第二個鍊錶逆序

1 -> 2 -> 3

6 -> 5 -> 4

第三步,依次連線兩個鍊錶

1 -> 6 -> 2 -> 5 -> 3 -> 4

/**

* definition for singly-linked list.

* public class listnode

* listnode(int val)

* listnode(int val, listnode next)

* }*/class

solution

//1.查詢鍊錶的中間結點

listnode middle =

middlenode

(head)

; listnode left = head;

listnode right = middle.next;

middle.next = null;

//2.右半部分鍊錶逆序

right =

reverselist

(right)

;//3.合併左右鍊錶

merge

(left,right);}

/** * 查詢鍊錶的中間結點

* @param head

* @return

*/public listnode middlenode

(listnode head)

return slow;

}/**

* 反轉鍊錶

* @param head

* @return

*/public listnode reverselist

(listnode head)

return pre;

}/**

* 合併鍊錶

* @param left

* @param right

*/public

void

merge

(listnode left,listnode right)

}}

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