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