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