/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
ListNode* rotateRight(ListNode* head, int k) {
// corner case
if (!head || !head->next || k <= 0) return head;
int len = 1;
auto tail = head;
while (tail->next) {
++len;
tail = tail->next;
}
k %= len;
if (!k) return head;
auto p = head;
for (int i = 0; i < len - k - 1; ++i)
p = p->next;
auto new_head = p->next;
p->next = nullptr;
tail->next = head;
return new_head;
}
}; 


京公网安备 11010502036488号