算法1:

  1. 首先遍历链表,确定链表总长度n;
  2. 将链表分成若干段,每段长度为k,共分成n/k段;
  3. 对于每一段,采用头插法逆序重排;
  4. 将重排后的每一段连接起来,返回新链表的头节点。

时间复杂度:O(n),空间复杂度:O(1)

算法2:

  1. 使用递归的方式,每次处理链表的前k个节点;
  2. 对于前k个节点,采用头插法逆序重排;
  3. 递归处理剩余的节点,将处理后的子链表连接起来,返回新链表的头节点。

时间复杂度:O(n),空间复杂度:O(k)

两种算法的优缺点:

算法1的优点是空间复杂度比较低,只需要常数级别的额外空间,而且代码实现比较简单;缺点是需要遍历链表两遍,时间复杂度较高。

算法2的优点是时间复杂度比较低,只需要遍历链表一遍,而且代码实现比较简单;缺点是空间复杂度比较高,需要开辟k个额外空间。

给出的链表中的节点每K个一组翻转返回翻转后的链表如果链表中的节点不是k的倍数将最后剩下的节点保持原样

原文地址: https://www.cveoy.top/t/topic/bn2I 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录