随笔-反转链表每k个节点(高效解法)
发布时间
阅读量:
阅读量
题目:给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。
k 表示一个正整数,其数值不超过链表中节点的总数。若链表中节点的数量无法被 k 整除,则剩余的节点应维持原有的排列顺序。
示例:
假设存在如下链表:1->2->3->4->5
当 k 的取值为 2 时,应输出:2->1->4->3->5
当 k 的取值为 3 时,应输出:3->2->1->4->5
说明:
所设计的算法在空间复杂度上需保持常数级别。
不允许仅通过修改节点内部存储的数据来实现目标,而应真正完成节点之间的交换操作。
链表分段反转实现思路
代码实现:
/** * Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
ListNode newTail=null;
public void reverse(ListNode head,ListNode tail){
//head为头结点,不带有任
全部评论 (0)
还没有任何评论哟~
