61. Rotate List - cocoder39/coco39_LC GitHub Wiki
ListNode* rotateRight(ListNode* head, int k) {
if (! head) {
return nullptr;
}
//size of list and last element of list
int sz = 1;
ListNode* last = head;
while (last->next) {
sz++;
last = last->next;
}
last->next = head; //cycle the list
k %= sz;
ListNode* newLast = head;
while (sz - k > 1) {
newLast = newLast->next;
k++;
}
ListNode* newHead = newLast->next;
newLast->next = nullptr;
return newHead;
}