leetCode 143 重排鍊錶

2021-10-24 23:32:40 字數 719 閱讀 3861

鍊錶不能直接對下標進行訪問,所以可以將鍊錶的節點全部存入線性表中,然後就可以通過下標直接訪問鍊錶節點然後重建鍊錶

class

solution

int i =

0, j = list.

size()

-1;while

(i < j)

list.

get(i)

.next = null;

}}

可以看到目標鍊錶是原鍊錶右半部分反轉後和左半部分合併的結果,因此解決此題可以劃分為三步:

找到鍊錶的中間節點

將右半部分鍊錶反轉

合併左右兩部分

class

solution

private listnode middlenode

(listnode head)

return slow;

}private listnode reverselist

(listnode head)

return prev;

}private

void

mergelist

(listnode l1, listnode l2)

}}

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