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 小时前
【算法题攻略】BFS 解决FloodFill 算法、最短路问题、多源BFS 和 拓扑排序
c++·算法·宽度优先
Adios7945 小时前
设置交集大小至少为2
数据结构·算法·leetcode
来一碗刘肉面12 小时前
栈的应用(表达式求值)
数据结构·算法
xiaowang1234shs13 小时前
怪兽轻断食技术深度测评:从断食计时引擎到AI识别算法的工程实践解析
数据库·人工智能·算法·macos·机器学习·p2p·visual studio
小果因子实验室13 小时前
量化研究--策略迁移算法1研究
算法
Web极客码13 小时前
如何用三段式确定性剪枝,为 LLM Agent 砍掉 35% 的 Token 成本?
服务器·人工智能·算法·机器学习
程序猿乐锅13 小时前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode
wabs66614 小时前
关于图论【广度优先搜索的理论基础】
算法·图论·宽度优先
孤魂23314 小时前
逻辑回归算法
算法·机器学习·逻辑回归