[Leetcode]61. Rotate List

来源:互联网 发布:灵魂摆渡3风华绝代知乎 编辑:程序博客网 时间:2024/04/29 05:50

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 == nullptr || k == 0 || head->next == nullptr)            return head;        ListNode *p = head;        int len = 1;        for (; p->next != nullptr; p = p->next)            ++len;        k = len - k % len;        p->next = head;        for (int i = 0; i != k; ++i)            p = p->next;        head = p->next;        p->next = nullptr;        return head;    }};


0 0
原创粉丝点击