leetcodeOJ 61. Rotate List

来源:互联网 发布:淘宝上卖的ios存档 编辑:程序博客网 时间:2024/06/05 21:02

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(k == 0 || head == NULL)            return head;                ListNode *p = head, *pre = head, *pp = head;        int len = 1;        while(p->next){            len++;            p = p->next;        }        p = head;        for(int i = 0; i < k%len; i++){            if(pp->next == NULL)                pp = head;            else                pp = pp->next;        }        cout << pp->val;        while(pp->next != NULL){            pp = pp->next;            pre = p;            p = p->next;        }        pp->next = head;        pre = p->next;        p->next = NULL;        return pre;           }};


0 0
原创粉丝点击