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;
    }
}
相关推荐
一只鱼^_几秒前
牛客周赛 Round 99
java·数据结构·c++·算法·贪心算法·动态规划·近邻算法
剪一朵云爱着1 小时前
力扣2438. 二的幂数组中查询范围内的乘积
算法·leetcode
肥猪猪爸3 小时前
BP神经网络对时序数据进行分类
人工智能·深度学习·神经网络·算法·机器学习·分类·时序数据
dongzhenmao4 小时前
P1484 种树,特殊情形下的 WQS 二分转化。
数据结构·c++·windows·线性代数·算法·数学建模·动态规划
thusloop7 小时前
380. O(1) 时间插入、删除和获取随机元素
数据结构·算法·leetcode
MobotStone7 小时前
无代码+AI时代,为什么你仍然需要像个开发者一样思考
人工智能·算法
緈福的街口8 小时前
【leetcode】584. 寻找用户推荐人
算法·leetcode·职场和发展
今天背单词了吗9808 小时前
算法学习笔记:17.蒙特卡洛算法 ——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·笔记·考研·算法·蒙特卡洛算法
Maybyy8 小时前
力扣242.有效的字母异位词
java·javascript·leetcode
wjcurry8 小时前
完全和零一背包
数据结构·算法·leetcode