LeetCode算法题目:Rotate List

来源:互联网 发布:nosql数据库入门 编辑:程序博客网 时间:2024/05/20 19:29

题目:

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.


分析:

先遍历一遍,得出链表的长度len,然后把链表首尾相连(构成环),然后令K=len-K%len,得出截断环的位置,移动相应位置后,将环截断即得到结果。


代码:

/** * 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) {        if (head==nullptr||k==0)        return  head;        int len=1;        ListNode *p=head;        while(p->next){            len++;            p=p->next;        }        p->next=head;        k=len-k%len;        for(int i=0;i<k;i++){            p=p->next;        }        head=p->next;        p->next=nullptr;        return head;    }};

0 0
原创粉丝点击