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

相关推荐
Pniubi2 分钟前
力扣 102二叉树的层序遍历(广度优先搜索)
leetcode·宽度优先
一去不复返的通信er2 分钟前
力扣15:盛最多水的容器
算法·leetcode
Navigator_Z5 分钟前
LeetCode //C - 1309. Decrypt String from Alphabet to Integer Mapping
c语言·算法·leetcode
潇湘秦8 分钟前
SQL Server 2016+ 整数类型元数据扩宽(秒级变更)完整说明
数据库·算法
小白起 v29 分钟前
02-数组与链表
数据结构·链表
文丑颜不良啊32 分钟前
LeetCode1281~1300题目解析
java·leetcode
Figo_Cheung1 小时前
Figo基于结构空间算法假设(SSAH)的生成式大模型优化范式与工程实现边界研究——提出适应AGI架构演化的自适应拓扑感知表征机制
算法·架构·agi
旖旎夜光2 小时前
LCR 170:交易逆序对的总数(归并排序) —— 题解
c++·学习·算法·leetcode·排序算法
微尘hjx10 小时前
【ByteTrack 04】多轨迹算法ByteTrack改进点
算法·yolo·目标检测·目标跟踪·bytetrack·ultralytics·车跟踪