题目描述
给你一个链表,每k个节点一组进行翻转,请你返回翻转后得链表。
k是一个正整数,它的值小于或等于链表的长度。
如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺寻。
示例
给定这个链表:1->2->3->4->5
当k=2时,应当返回:2->1->4->3->5
当k=3时,应当返回:3->2->1->4->5
思路(看图看代码)
用4个指针(pre, end, start, next)来记录完成整个过程。
代码
1 | package leetcode; |
复杂度分析
- 时间复杂度为O(N*K)。最好的情况是O(N),最坏的情况是O(N^2)
- 空间复杂度为O(1)
PS:这道题确实挺有难度,然后leetcode上我参考了王小二大佬的图和思路,然后自己写的代码。