LeetCode Hot100 25.K个一组翻转链表

题目

给你链表的头节点 head ,每 k个节点一组进行翻转,请你返回修改后的链表。

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

你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

方法:灵神 翻转链表

代码

java 复制代码
class Solution {
    public ListNode reverseKGroup(ListNode head, int k) {
        int n = 0;
        ListNode cur = head;
        while (cur != null) {
            n++;
            cur = cur.next;
        }
        cur = head;
        ListNode dummy = new ListNode(0, head), p0 = dummy;
        ListNode pre = null;
        for (; n >= k; n -= k) {
            for (int i = 0; i < k; i++){
                ListNode next = cur.next; // 每次循环只修改一个next,方便大家理解 火车头
                cur.next = pre;
                pre = cur;
                cur = next;
            }
            ListNode next = p0.next;  // 下一组
            p0.next.next = cur;
            p0.next = pre;
            p0 = next;
        }
        return dummy.next;
    }
}
相关推荐
8Qi87 小时前
回文子串(Palindromic Substrings)—— 题解
算法·leetcode·职场和发展·动态规划
小宋加油啊12 小时前
机械臂抓取物体 PVN3D算法调研学习
学习·算法·3d
lqqjuly12 小时前
前沿算法深度解析(一)
算法
小欣加油12 小时前
leetcode1926 迷宫中离入口最近的出口
数据结构·c++·算法·leetcode·职场和发展
happymaker062614 小时前
LeetCodeHot100——42.接雨水
算法
阿正的梦工坊15 小时前
【Rust】07-错误处理:Option、Result 与 ? 运算符
开发语言·算法·rust
努力努力再努力wz16 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
八解毒剂16 小时前
数据结构-平衡二叉树——对二叉搜索树的优化
数据结构·c++·算法
运行时记录17 小时前
别再手动写提示词了 — SkillOpt 让技能文档自己进化
算法