Leetcode打卡 | No.25 k 个一组翻转链表

No.25 k 个一组翻转链表

给出一个链表,每 个节点一组进行翻转,并返回翻转后的链表。

是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 的整数倍,那么将最后剩余节点保持原有顺序。

示例 :

给定这个链表:1->2->3->4->5

当 = 2 时,应当返回: 2->1->4->3->5

当 = 3 时,应当返回: 3->2->1->4->5

说明 :

 ●  你的算法只能使用常数的额外空间。
 ●  你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

特意留白一行 ,因为小詹做了两个多小时 ,还是没做出来 。。。。。。然后也就不想挣扎了 ,看了别人的代码 ,刷题这个东西 ,不能停啊 !不进则退 。

简单分析下思路 :

 ●  链表长度应该是大于给定值 k 的 ,可以分两种情况进行处理 。
 ●  一种是连续 k 个节点做翻转 ,之后将多个链表片段进行整合 。
 ●  另一种是链表结尾多出的几个节点 ,不够 k 个节点的那部分保留不做翻转 。

以下是讨论区的代码 ,验证可行 。说实话 ,小詹自己是没想到 ,小詹自己想到的是相邻两个翻转 ,依次往后 ,但是没能实现 。。下边代码建议自己假设一个案例复现 ,顺着思路走能看懂 ,但是自己写就是另一回事了 ……手生了哎

c8a6d07b0d874afafd17ac57fe8ebabde5b43273


原文发布时间为:2018-09-19

本文来自云栖社区合作伙伴“小詹学Python”,了解相关信息可以关注“小詹学Python”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值