题目
描述
给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。
注意是节点的编号而非节点的数值。
数据范围:节点数量满足 0≤n≤10 ,节点中的值都满足 0≤val≤1000
要求:空间复杂度 O(n),时间复杂度 O(n)
思路
将结点值根据位置分别放在奇偶列表,然后合并重建链表。
、
代码
python版本:
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @return ListNode类
#
class Solution:
def oddEvenList(self , head: ListNode) -> ListNode:
# write code here
list_j = []
list_o = []
index = 1
while(head):
val = head.val
if(index%2==0):
list_o.append(val)
else:
list_j.append(val)
head = head.next
index += 1
new_head = ListNode(-1)
sg = new_head
for v in (list_j+list_o):
node = ListNode(v)
new_head.next = node
new_head = new_head.next
return sg.next
c++版本:
无