本文共 599 字,大约阅读时间需要 1 分钟。
No.25 k 个一组翻转链表
给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。
示例 :
给定这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 3 时,应当返回: 3->2->1->4->5
说明 :
● 你的算法只能使用常数的额外空间。
● 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。特意留白一行 ,因为小詹做了两个多小时 ,还是没做出来 。。。。。。然后也就不想挣扎了 ,看了别人的代码 ,刷题这个东西 ,不能停啊 !不进则退 。
简单分析下思路 :
● 链表长度应该是大于给定值 k 的 ,可以分两种情况进行处理 。
● 一种是连续 k 个节点做翻转 ,之后将多个链表片段进行整合 。 ● 另一种是链表结尾多出的几个节点 ,不够 k 个节点的那部分保留不做翻转 。以下是讨论区的代码 ,验证可行 。说实话 ,小詹自己是没想到 ,小詹自己想到的是相邻两个翻转 ,依次往后 ,但是没能实现 。。下边代码建议自己假设一个案例复现 ,顺着思路走能看懂 ,但是自己写就是另一回事了 ……手生了哎
原文发布时间为:2018-09-19
本文来自云栖社区合作伙伴“”,了解相关信息可以关注“”。
转载地址:http://ogfsx.baihongyu.com/