143. 重排链表
https://leetcode-cn.com/problems/reorder-list/
解法一:双端队列
from collections import deque
class Solution:
def reorderList(self, head: 'ListNode') -> 'None':
"""
Do not return anything, modify head in-place instead.
"""
p = head
d = deque()
lens = 0
#所有结点按序放入双端队列
while p:
d.append(p)
p = p.next
lens += 1
work = ListNode(None) #工作节点
#左边出一个,右边出一个,按此顺序依次连入新链
for i in range(lens):
if i%2 == 0:
tmp = d.popleft() #弹出队列左边元素
else:
tmp = d.pop() #右边
work.next = tmp
work = work.next
work.next = None #防止环链解法二:
从中间切两半,前一半为链1,后一半反转(用头插法)得链2,然后在新链上交替取链1,链2各一个结点即可
最后更新于