/** * Definition for singly-linked list. * 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; } * } */ class Solution { public ListNode reverseKGroup(ListNode head, int k) { int count = 0; ListNode current = head; ListNode previous = null; ListNode newCurrent = current; ListNode leftBreak = null,reverseTail = head, reverseHead = null; while(true){ count ++; if(count == k){ reverseHead = current; current = reverseTail; previous = null; while (previous != reverseHead){ newCurrent = current.next; current.next = previous; previous = current; current = newCurrent; } if(leftBreak == null){ head = reverseHead; }else{ leftBreak.next = reverseHead; } leftBreak = reverseTail; reverseTail.next = current; reverseTail = current; count = 0; }else{ current = current.next; } if(current == null){ break; } } return head; } }