BM3 链表中的节点每k个一组翻转
描述
将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表
如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样
你不能更改节点中的值,只能更改节点本身。
如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样
你不能更改节点中的值,只能更改节点本身。
数据范围:0≤n≤2000 ,1≤k≤2000 ,链表中每个元素都满足 0≤val≤1000
要求空间复杂度 O(1),时间复杂度 O(n)
要求空间复杂度 O(1),时间复杂度 O(n)
例如:
给定的链表是 1→2→3→4→51→2→3→4→5
对于k=2 , 你应该返回 2→1→4→3→5
对于k=3 , 你应该返回 3→2→1→4→5
1 import java.util.*; 2 3 /* 4 * public class ListNode { 5 * int val; 6 * ListNode next = null; 7 * } 8 */ 9 10 public class Solution { 11 /** 12 * 13 * @param head ListNode类 14 * @param k int整型 15 * @return ListNode类 16 */ 17 public ListNode reverseKGroup (ListNode head, int k) { 18 ListNode tail = head; 19 // 获得每个反转组的最后一个节点 20 for (int i = 0; i < k; i++) { 21 if (tail == null) { 22 return head; 23 } 24 tail = tail.next; 25 } 26 27 // 开始反转 28 // ListNode pre = null; 29 ListNode pre = new ListNode(-1); 30 ListNode cur = head; 31 32 while (cur != tail) { 33 ListNode next = cur.next; 34 cur.next = pre; 35 pre = cur; 36 cur = next; 37 } 38 head.next = reverseKGroup(tail,k); 39 40 return pre; 41 } 42 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理