1655 字
约 5 分钟
6
LeetCode刷题Java版:025. K 个一组翻转链表
无标签

LeetCode刷题Java版:025. K 个一组翻转链表

作者:沉默王二
发布时间:2022-08-13T08:54:41.401+0800


025. 翻转链表,K 个节点一组

LeetCode 官方这道题的题目是 K 个一组翻转链表,怎么看怎么别扭,二哥这里就直接修改了。

题意

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那请将最后剩余的节点保持原有顺序。

注:你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

难度

困难

示例



/**

 * 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; } * } */public class Solution {    public ListNode reverseKGroup(ListNode head,int k){        ListNode tail = head;        for(int i = 1; i <= k;i++){            if(tail == null)                return head;            tail = tail.next;        }        ListNode newHead = reverse(head,tail);        head.next = reverseKGroup(tail,k);        return newHead;    }    private ListNode reverse(ListNode head, ListNode tail){        ListNode pos1 = new ListNode(),pos2 = new ListNode();        while(head != tail){            pos2 = head.next;            head.next = pos1;            pos1 = head;            head = pos2;        }        return pos1;    }}


总结

通过 024.两两交换链表中的节点 的思维跃迁,我们能够快速得出这 k个一组的链表翻转的解题思路,实质上Leetcode上的很多题目,都是围绕着一个核心思想不断变形,只要掌握其中的关键,就可以以不变应万变,仅仅需要对题目的特殊之处加以处理就能举一反三,所以遇到问题的时候,不妨先想想看与先前的是否有联系,这样子就可以使问题简单化,甚至能够从先前的角度直接解决。

力扣链接:https://leetcode.cn/problems/reverse-nodes-in-k-group/

一步一个脚印

不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。

PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。

一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 640 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!

025. 翻转链表,K 个节点一组

LeetCode 官方这道题的题目是 K 个一组翻转链表,怎么看怎么别扭,二哥这里就直接修改了。

题意

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那请将最后剩余的节点保持原有顺序。

注:你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

难度

困难

示例



/**

 * 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; } * } */public class Solution {    public ListNode reverseKGroup(ListNode head,int k){        ListNode tail = head;        for(int i = 1; i <= k;i++){            if(tail == null)                return head;            tail = tail.next;        }        ListNode newHead = reverse(head,tail);        head.next = reverseKGroup(tail,k);        return newHead;    }    private ListNode reverse(ListNode head, ListNode tail){        ListNode pos1 = new ListNode(),pos2 = new ListNode();        while(head != tail){            pos2 = head.next;            head.next = pos1;            pos1 = head;            head = pos2;        }        return pos1;    }}


总结

通过 024.两两交换链表中的节点 的思维跃迁,我们能够快速得出这 k个一组的链表翻转的解题思路,实质上Leetcode上的很多题目,都是围绕着一个核心思想不断变形,只要掌握其中的关键,就可以以不变应万变,仅仅需要对题目的特殊之处加以处理就能举一反三,所以遇到问题的时候,不妨先想想看与先前的是否有联系,这样子就可以使问题简单化,甚至能够从先前的角度直接解决。

力扣链接:https://leetcode.cn/problems/reverse-nodes-in-k-group/

一步一个脚印

不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。

PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。

一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 640 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!

025. 翻转链表,K 个节点一组

LeetCode 官方这道题的题目是 K 个一组翻转链表,怎么看怎么别扭,二哥这里就直接修改了。

题意

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那请将最后剩余的节点保持原有顺序。

注:你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

难度

困难

示例



/**

 * 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; } * } */public class Solution {    public ListNode reverseKGroup(ListNode head,int k){        ListNode tail = head;        for(int i = 1; i <= k;i++){            if(tail == null)                return head;            tail = tail.next;        }        ListNode newHead = reverse(head,tail);        head.next = reverseKGroup(tail,k);        return newHead;    }    private ListNode reverse(ListNode head, ListNode tail){        ListNode pos1 = new ListNode(),pos2 = new ListNode();        while(head != tail){            pos2 = head.next;            head.next = pos1;            pos1 = head;            head = pos2;        }        return pos1;    }}


总结

通过 024.两两交换链表中的节点 的思维跃迁,我们能够快速得出这 k个一组的链表翻转的解题思路,实质上Leetcode上的很多题目,都是围绕着一个核心思想不断变形,只要掌握其中的关键,就可以以不变应万变,仅仅需要对题目的特殊之处加以处理就能举一反三,所以遇到问题的时候,不妨先想想看与先前的是否有联系,这样子就可以使问题简单化,甚至能够从先前的角度直接解决。

力扣链接:https://leetcode.cn/problems/reverse-nodes-in-k-group/

一步一个脚印

不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。

PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。

一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 640 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!

            知识星球
            
    
    
        
        扫码加入星球
        查看更多优质内容
    
    https://wx.zsxq.com/mweb/views/joingroup/join_group.html?group_id=15522885221412
LeetCode刷题Java版:025. K 个一组翻转链表
https://clxhxhhr.top/posts/2488/
作者
clxstart
发布于
2026-09-19
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。