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