1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
class Solution { public: ListNode* rotateRight(ListNode* head, int k) { if(!head) return nullptr; int length = 0; ListNode* point = head; ListNode* tail = nullptr; while(point) { ++length; tail = point; point = point->next; } k %= length; if(!k) return head; k = length - k - 1; point = head; for(int i = 0; i < k; ++i) { point = point->next; } auto ret = point->next; point->next = nullptr; tail->next = head; return ret; } };
|