[LeetCode 题解]: Rotate List
生活随笔
收集整理的這篇文章主要介紹了
[LeetCode 题解]: Rotate List
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Given a list, rotate the list to the right by?k?places, where?k?is non-negative.
For example:
Given?1->2->3->4->5->NULL?and?k?=?2,
return?4->5->1->2->3->NULL.
題意:
翻轉鏈表。
思路:
首先需要讀懂題意。題目的描述有問題,應該是將鏈表的最后k個元素移動到鏈表的頭部。
這道題的本質就是尋找鏈表的倒數第k個元素。在該點將鏈表分成兩個部分,然后調換順序即可。
陷阱:
k的長度沒有說明,可能k比鏈表的長度還要大。 設鏈表的長度為Len,那么移動的節點個數應該為 K%Len.
? ?
class Solution { public:int getListLength(ListNode *head){int len=0;ListNode *tmp=head;while(tmp){len++;tmp = tmp->next;}return len;}ListNode *rotateRight(ListNode *head, int x) {if(head==NULL) return head; // empty listint len = getListLength(head);x = x%len; // how many nodes to rotateif( len<=1 || x==0) return head;// find xth node from tail of listListNode *tmp=head;ListNode *lend=head;ListNode *hstart=head;while(tmp->next){if(x==0){lend = lend->next;}else{--x;}tmp = tmp->next;}hstart = lend->next;lend->next=NULL;tmp->next=head;return hstart;} };轉載請注明出處: http://www.cnblogs.com/double-win/ 謝謝!
轉載于:https://www.cnblogs.com/double-win/p/3883882.html
總結
以上是生活随笔為你收集整理的[LeetCode 题解]: Rotate List的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js中转化日期格式
- 下一篇: 2014多校第四场1006 || HD