题目考察的知识点
考察链表的遍历操作
题目解答方法的文字分析
为了方便,先写出链表逆序的函数,随后遍历链表,按照k个一组,对组内的链表进行逆序操作。
本题解析所用的编程语言
使用Java语言解答
完整且正确的编程代码
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { public ListNode reverseKGroup (ListNode head, int k) { ListNode dummy = new ListNode(0); //新建虚拟头节点 dummy.next = head; ListNode prev = dummy; ListNode curr = head; int count = 0; while (curr != null) { count++; if (count % k == 0) { prev = reverse(prev, curr.next); //逆序 curr = prev.next; } else { curr = curr.next; } } return dummy.next; } ListNode reverse(ListNode prev, ListNode end) { ListNode curr = prev.next; ListNode tail = curr; while (curr != end) { ListNode temp = curr.next; curr.next = prev.next; prev.next = curr; curr = temp; } tail.next = end; return tail; } }