LeetCode--Rotate List

来源:互联网 发布:搜狗五笔 mac 编辑:程序博客网 时间:2024/06/03 16:48

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.


/** * 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 == NULL)            return head;        ListNode* temp = head;        int count = 0;        while(temp != NULL)        {            count++;            temp = temp->next;        }        k = k%count;        if(k == 0)            return head;        ListNode* pre = head;        ListNode* end = head;        int i=1;        while(i<k && end->next!=NULL)        {            end = end->next;            i++;        }        if(i != k)            return head;        else        {            ListNode* temp;            while(end->next!=NULL)            {                temp = pre;                pre = pre->next;                end = end->next;            }            temp->next = end->next;            end->next = head;            return pre;        }    }};


0 0