LeetCode:25K个一组翻转链表

java 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseKGroup(ListNode head, int k) {
        ListNode dummy = new ListNode(0);
        dummy.next = head;

        ListNode prev = dummy;
        ListNode end  = dummy;

        while(end.next != null){
            //将end指针移动k步找到本组的尾
            for(int i = 0; i < k && end != null; i++){
                end = end.next;
            }
            if(end == null) break;

            //将本组与后面进行切割
            ListNode start = prev.next;
            ListNode nextGroup = end.next;
            end.next = null;

            //进行局部翻转
            prev.next = reverseList(start);
            //将反转后的节点与后续连接起来
            start.next = nextGroup;

            //为下组做准备
            prev = start;
            end = prev;
        }
        return dummy.next;
    }
    //翻转链表
    private ListNode reverseList(ListNode head){
        ListNode prev = null;
        ListNode curr = head;

        while(curr != null){
            ListNode nextTemp = curr.next;
            curr.next = prev;
            prev = curr;
            curr = nextTemp;
        }
        return prev;
    }
}

设置prev和end节点为当前要翻转组的前驱节点和最后节点

设置start和nextGroup节点,用于切割待翻转节点组和连接后续节点。

写一个反转链表的函数进行调用

最后prev和end节点移动到第二组需要翻转的节点组

相关推荐
小程故事多_801 天前
从A2C、TRPO、PPO到GRPO,强化学习策略梯度算法完整演进与大模型落地实战解析
人工智能·算法
2601_956121971 天前
二分算法(知识点+题目)
c++·算法
AndrewHZ1 天前
【LLM技术全景】阶段总结:技术原理篇核心知识回顾
人工智能·深度学习·算法·语言模型·大模型·llm·芯片开发
小星星闪亮登场1 天前
2026萌新联赛第三场-- (郑州轻工业大学)
数据结构·c++·经验分享·算法·贪心算法·排序算法·深度优先
冻柠檬飞冰走茶1 天前
PTA基础编程题目集 7-8超速判断(C++语言实现)
开发语言·数据结构·c++·算法
玖玥拾1 天前
LeetCode 88 合并两个有序数组
算法·leetcode
数据皮皮侠AI2 天前
上市公司数字供应链金融指数(2010-2024)
大数据·人工智能·算法
小程故事多_802 天前
用GRPO算法重塑多智能体系统,从原理落地到复杂任务规划实战
人工智能·算法
Hi李耶2 天前
【LeetCode】541.反转字符串 II
算法·leetcode·职场和发展
shylyly_2 天前
104.二叉树的最大深度
数据结构·算法·104.二叉树的最大深度