[Leetcode]Rotate List

来源:互联网 发布:编程开发用什么笔记本 编辑:程序博客网 时间:2024/06/05 10:37

Rotate List
Total Accepted: 55147 Total Submissions: 249704 Difficulty: Medium

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.

Subscribe to see which companies asked this question

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