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, the left-out nodes at the end should remain as is.
You may not alter the values in the list's nodes; only the nodes themselves may be changed.
Input: 1 -> 2 -> 3 -> 4 -> 5, k = 2 Output: 2 -> 1 -> 4 -> 3 -> 5
Input: head = [1,2,3,4,5], k = 2 Output: [2,1,4,3,5] Explanation: Groups of 2 are reversed; the final node 5 has no pair so it stays in place.
Input: 1 -> 2 -> 3 -> 4 -> 5, k = 3 Output: 3 -> 2 -> 1 -> 4 -> 5
Input: head = [1,2,3,4,5], k = 3 Output: [3,2,1,4,5] Explanation: The first group of 3 is reversed; the remaining 2 nodes are fewer than k so they stay unchanged.
head = [1, 2, 3, 4, 5], k = 2