首页 > 试题广场 >

按照左右半区的方式重新组合单链表

[编程题]按照左右半区的方式重新组合单链表
  • 热度指数:1886 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个单链表的头部节点 head,链表长度为 N,如果 N 是偶数,那么前 N / 2 个节点算作左半区,后 N / 2 个节点算作右半区;如果 N 为奇数,那么前 N / 2 个节点算作左半区,后 N / 2 + 1个节点算作右半区。左半区从左到右依次记为 L1->L2->...,右半区从左到右依次记为 R1->R2->...,请将单链表调整成 L1->R1->L2->R2->... 的形式。

输入描述:
单链表的头节点 head。


输出描述:
在给定的函数内返回链表的头指针。
示例1

输入

6
1 2 3 4 5 6

输出

1 4 2 5 3 6

备注:
保证链表的长度不大于1000000
n=int(input())
number_list=list(map(int,input().split()))
#分左右区
left_list=number_list[:n//2]
right_list=number_list[n//2:]
ans=[]
for i in range(len(left_list)):
    ans.append(left_list[i])
    ans.append(right_list[i])
#多了一个元素
if n%2!=0:
    ans.append(right_list[-1])
print(' '.join(map(str,ans)))

发表于 2021-07-13 10:58:51 回复(0)

问题信息

上传者:小小
难度:
1条回答 2608浏览

热门推荐

通过挑战的用户

查看代码