Rotate List

来源:互联网 发布:linux中如何创建用户 编辑:程序博客网 时间:2024/06/02 07:31

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.


转圈,所以就是先做一个round list, 算有多长,再往前走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 || k==0)    return head;    ListNode* p=head;    int len=1;    while(p->next){    len++;    p=p->next;    }    k=len-k%len;    p->next=head;    for (int i=0; i<k; i++){    p=p->next;    }    head=p->next;    p->next=0;    return head;    }};


0 0