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”。

相关文章
|
1月前
|
算法
LeetCode刷题---21.合并两个有序链表(双指针)
LeetCode刷题---21.合并两个有序链表(双指针)
|
1月前
|
算法
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
1月前
|
算法 测试技术
LeetCode刷题--- 430. 扁平化多级双向链表(深度优先搜索)
LeetCode刷题--- 430. 扁平化多级双向链表(深度优先搜索)
|
3天前
【力扣】21. 合并两个有序链表
【力扣】21. 合并两个有序链表
|
1月前
|
存储 JavaScript
leetcode82. 删除排序链表中的重复元素 II
leetcode82. 删除排序链表中的重复元素 II
22 0
|
1月前
leetcode83. 删除排序链表中的重复元素
leetcode83. 删除排序链表中的重复元素
10 0
|
1月前
|
机器学习/深度学习 NoSQL Shell
力扣刷题-翻转字符串
力扣刷题-翻转字符串
12 1
|
1月前
leetcode2807.在链表中插入最大公约数
leetcode2807.在链表中插入最大公约数
16 0
|
1月前
leetcode2487.从链表中移除节点
leetcode2487.从链表中移除节点
20 1