return4->5->1->2->3->NULL.
这个问题,我同学和我说,面试出过问题。
需要小心的点是,k > 链表长度,此时相当于又一个mod过程。
思路不难,两个指针,前后走就行。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *rotateRight(ListNode *head, int k) { ListNode *pToEnd = head; ListNode *pNewEnd = head; ListNode *pNewHead; if(head == NULL) return NULL; int i = 0; for(; i < k ;i ++) { if(pToEnd->next == NULL)//k大于链表长度的话 pToEnd = head; else pToEnd = pToEnd->next; } while(pToEnd->next != NULL) { pToEnd = pToEnd->next; pNewEnd = pNewEnd->next; } pToEnd->next = head; pNewHead = pNewEnd->next; pNewEnd->next = NULL; return pNewHead; } };