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;
    }
}
相关推荐
在所不辞兄3 分钟前
【零基础学智能仿真-69】综合项目——材料参数驱动的仿真研究
人工智能·深度学习·神经网络·算法·机器学习·1024程序员节
Tisfy1 小时前
LeetCode 3665.统计镜子反射路径数目:三个动态规划数组
leetcode·动态规划·代理模式·题解
番茄味城市甜菜1 小时前
数据结构:双向链表实现,链表与顺序表的对比
数据结构·链表
怕浪猫1 小时前
Super-agent 在各大模型厂商的应用情况
算法·面试·github
海绵宝宝转agent2 小时前
LeetCode100 二叉树个人题解
算法·leetcode·深度优先
octopus_c2 小时前
C++ 模板详解:函数模板、类模板、特化与分离编译
开发语言·c++·算法
東隅已逝,桑榆非晚2 小时前
算法1. 双指针法-移动零
c++·算法
CQU_JIAKE3 小时前
11.1[A]
算法
文丑颜不良啊3 小时前
LeetCode1581~1600题目解析
java·leetcode
小郎君6583 小时前
(六)el-cascader 的展示值为什么不能直接 join:emitPath、路径还原与多选去重
vue.js·算法