Reverse Nodes in k-Group Posted on 2018-08-19 Descriptionhttps://leetcode.com/problems/reverse-nodes-in-k-group/description/ Solution1234567891011121314151617181920212223242526272829303132333435363738394041424344454647/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode reverseKGroup(ListNode head, int k) { if (head == null || head.next == null) return head; ListNode new_head = new ListNode(-1); new_head.next = head; ListNode traverse = new_head; while (true) { if (testReverse(traverse, k) == true) { traverse = reverseList(traverse, k); } else return new_head.next; } } //Return the head tail of partial list public ListNode reverseList(ListNode start, int k) { ListNode pre = start.next; ListNode current = start.next.next; for (int i = 0; i < k - 1; i++) { ListNode temp = current.next; current.next = pre; pre = current; current = temp; } ListNode originNext = start.next; start.next = pre; originNext.next = current; return originNext; } public boolean testReverse(ListNode start, int k) { while(k > 0) { if (start.next == null) return false; k -= 1; start = start.next; } return true; }}