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;
    }
}
相关推荐
学无止境\n几秒前
[C语言]指针和数组
c语言·数据结构·算法
黄俊懿5 分钟前
【深入理解SpringCloud微服务】手写实现各种限流算法——固定时间窗、滑动时间窗、令牌桶算法、漏桶算法
java·后端·算法·spring cloud·微服务·架构
新缸中之脑5 分钟前
Llama 3.2 安卓手机安装教程
前端·人工智能·算法
夜雨翦春韭24 分钟前
【代码随想录Day29】贪心算法Part03
java·数据结构·算法·leetcode·贪心算法
Curry_Math41 分钟前
Acwing 区间DP & 计数类DP
算法
Tisfy1 小时前
LeetCode 1928.规定时间内到达终点的最小花费:动态规划
算法·leetcode·动态规划·
ん贤1 小时前
贪心算法.
算法·贪心算法
cndes1 小时前
大数据算法的思维
大数据·算法·支持向量机
Mopes__3 小时前
Python | Leetcode Python题解之第461题汉明距离
python·leetcode·题解
睡不着还睡不醒3 小时前
【数据结构强化】应用题打卡
算法