链表题--01----K 个一组翻转链表
Posted 高高for 循环
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表题--01----K 个一组翻转链表相关的知识,希望对你有一定的参考价值。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
K 个一组翻转链表
题目:
分析:
数K个数,返回
public static ListNode getKGroupEnd(ListNode start, int k)
while (--k != 0 && start != null)
start = start.next;
return start;
链表反转
public static void reverse(ListNode start, ListNode end)
end = end.next;
ListNode pre = null;
ListNode cur = start;
ListNode next = null;
while (cur != end)
next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
start.next = end;
总逻辑
代码
// 测试链接:https://leetcode.com/problems/reverse-nodes-in-k-group/
public class Code04_ReverseNodesInKGroup
// 不要提交这个类
public static class ListNode
public int val;
public ListNode next;
public static ListNode reverseKGroup(ListNode head, int k)
ListNode start = head;
ListNode end = getKGroupEnd(start, k);
if (end == null)
return head;
// 第一组凑齐了!
head = end;
reverse(start, end);
// 上一组的结尾节点
ListNode lastEnd = start;
while (lastEnd.next != null)
start = lastEnd.next;
end = getKGroupEnd(start, k);
if (end == null)
return head;
reverse(start, end);
lastEnd.next = end;
lastEnd = start;
return head;
public static ListNode getKGroupEnd(ListNode start, int k)
while (--k != 0 && start != null)
start = start.next;
return start;
public static void reverse(ListNode start, ListNode end)
end = end.next;
ListNode pre = null;
ListNode cur = start;
ListNode next = null;
while (cur != end)
next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
start.next = end;
以上是关于链表题--01----K 个一组翻转链表的主要内容,如果未能解决你的问题,请参考以下文章