Given the head of a linked list, reverse the nodes of the list k at a time, and return the modified list.
k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then the remaining nodes at the end should remain as-is.
You may not alter the values in the list's nodes, only nodes themselves may be changed.
Example 1:
Input: head = [1,2,3,4,5], k = 2
Output: [2,1,4,3,5]
Explanation: Reverse in groups of 2: [1,2] becomes [2,1], [3,4] becomes [4,3], and [5] stays.
Example 2:
Input: head = [1,2,3,4,5], k = 3
Output: [3,2,1,4,5]
Explanation: Reverse in groups of 3: [1,2,3] becomes [3,2,1], and [4,5] stays (fewer than k nodes).
Example 3:
Input: head = [1,2,3,4,5], k = 1
Output: [1,2,3,4,5]
Explanation: Groups of 1 require no reversal.
n1 <= k <= n <= 50000 <= Node.val <= 1000