Rotate List

来源:互联网 发布:淘宝买机油 编辑:程序博客网 时间:2024/05/16 19:10

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) {                int size = 0;        ListNode *p = head;        while(p != NULL)        {            size++;            p = p->next;        }                if(size == 0 || size == 1)            return head;                    k = k % size;        for(int i = 0; i < k; i++)        {            ListNode *pretail = head;            while(pretail->next->next != NULL)                pretail = pretail->next;                            ListNode *tail = pretail->next;            pretail->next = NULL;            tail->next = head;            head = tail;        }                return head;    }};


0 0
原创粉丝点击