【题目描述】
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.
You may not alter the values in the nodes, only nodes itself may be changed.
Only constant memory is allowed.
给你一个链表以及一个k,将这个链表从头指针开始每k个翻转一下。
链表元素个数不是k的倍数,最后剩余的不用翻转。
【题目链接】
www.lintcode.com/en/problem/reverse-nodes-in-k-group/
【题目解析】
本题是要将原始链表每k各节点分成一组,然后组内翻转,最后一组如果不满k个,则不进行反转,保留原始的顺序,难点在于如何判断最后一组的情况以及两个相邻组转换之后的头和尾要连接在一起,如何解决这个时间差。所以自然而然的想到了递归的方法,这样先解决最后一个k元祖,然后在一个一个向前遍历,每次都把当前k元组排列好才进行下一个,很好的解决了上述两个问题。
【参考答案】
网友评论