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->5->2->4->3.方案:
先將鍊錶存入到乙個棧裡,這樣就相當於你有了乙個順序的鍊錶和乙個倒序的鍊錶
然後找到鍊錶長的中心點,從順序鍊錶中取出乙個,從倒序的鍊錶中取出乙個
直到中心位置停止
class solution(object):
def reorderlist(self, head):
if not head:
return none
p,q = head,head
s =
while p:
p = p.next
count = (len(s) - 1)//2
while count:
temp = s.pop()
temp.next = q.next
q.next = temp
q = temp.next
count -= 1
s.pop().next = none
143 重排鍊錶
題解 時間複雜度 o n 空間複雜度 o n definition for singly linked list.struct listnode listnode int x val x next nullptr listnode int x,listnode next val x next nex...
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,重新排列...
143 重排鍊錶
給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.暴力,使用stack逆序儲存後面要插入的數字 因為和遍歷的順序...