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节点移动到第二组需要翻转的节点组

相关推荐
v_34836087621 小时前
Android native端 堆栈打印
android·算法
residual_fan1 小时前
【学术论文】航空发动机故障诊断智能体:基于持续对比强化学习的动态优化方法
人工智能·算法·数据挖掘·数据分析
GreenTea2 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
深圳满意度咨询3 小时前
医院满意度数字化测评系统:从数据采集到智能决策的技术实践
算法
xiangyun613 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun614 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
302wanger5 小时前
推荐下我的两个AI信息源
算法
索尔~古德曼5 小时前
CF——错题的集合
算法
SL_staff5 小时前
JVS-Logic:从页面配置工具到企业级业务逻辑中枢的技术演进
java·算法·全栈
陌シ未央ゞ6 小时前
基于BM25算法和RRF实现的混合索引(java版)
人工智能·spring boot·后端·算法