lintcode 99 重排鍊錶

2022-03-29 17:44:59 字數 829 閱讀 5729

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

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

必須在不改變節點值的情況下進行原地操作。

樣例給出鍊錶 1->2->3->4->null,重新排列後為1->4->2->3->null。

挑戰can you do this in-place without altering the nodes' values?

標籤鍊錶

思路

先將鍊錶整體一分為二,然後將後半段鍊錶逆序,再依次插入前半段節點中。

code

/**

* definition of listnode

* class listnode

* }*/class solution

temp->next = null;

slow = reverse(slow);

listnode *newhead = head;

while(newhead != null)

else}}

}listnode *reverse(listnode *head)

l2 = l1->next;

if(l2->next == null)

l3 = l2->next;

if(l2->next != null)

l1 = l2;

l2 = l3;

if(l3->next != null)

}l2->next = l1;

return l2;}}

};

lintcode 99 重排鍊錶

描述 給定乙個單鏈表l l 0 l1 l n 1 l n,重新排列後為 l 0 ln l 1 ln 1 l 2 ln 2 必須在不改變節點值的情況下進行原地操作。樣例 給出鍊錶1 2 3 4 null,重新排列後為1 4 2 3 null。思路 直接用迴圈來做 記憶體超了 後改用遞迴 definit...

213 重排鍊錶

題目描述 給定乙個單鏈表 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,重新排列為 ...

143 重排鍊錶

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