首页 > 试题广场 >

以组为单位翻转单向链表

[编程题]以组为单位翻转单向链表
  • 热度指数:1370 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

给一个单向链表以及整数N,使得每N个元素为一组进行翻转。要求时间复杂度O(n), 空间复杂度O(1)。

示例1

输入

{1,2,3,4,5,6,7,8},3

输出

{3,2,1,6,5,4,8,7}

说明:本题目包含复杂数据结构ListNode,点此查看相关信息
头像 Laurels_
发表于 2021-04-07 09:23:28
先定义a:该部分的头节点,b:该部分的尾节点的next节点(不在该部分中) 通过自己封装的reverse()完成反转,并返回新的头节点。即ListNode newHead = reverse(a,b); 而为了连接各个部分,我们可以利用递归的返回值,因为每个部分的头节点必定会成为尾节点,直接将本层递 展开全文