LeetCode 143 重排鍊錶

2021-09-03 01:49:41 字數 741 閱讀 6648

給定乙個單鏈表 l:l0→l1→…→l

n-1→ln ,

將其重新排列後變為: l0→l

n→l1→l

n-1→l2→l

n-2→…

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

解題思路:

首先想到的是找到要插入的元素,壓入堆疊,彈出時剛好為期望的順序,然後插入對應位置。

再換一種思路,找到待插入節點的位置,新建乙個頭結點指向此處,然後將待插入節點反轉,最後按順插入對應節點中。

listnode* solution::reorderlist(listnode *phead)

else

else

}/*3.get p2 head*/

p1 = p1->next;

for(index = 0; index < length - devideposition; index ++)

p2->next = p1;

/*4.reverse p2*/

p2 = function.reverselist(p2);

p2 = p2->next;

/*5.insert p2 to p3 by order*/

for(index = 0; index < devideposition; index ++)

p3->next = null;

return phead;

}

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 的結點入棧,...

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

Leetcode 143 重排鍊錶

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