4.29 leetcode -29 rotate-list

来源:互联网 发布:淘宝默认邮箱 编辑:程序博客网 时间:2024/06/05 14:52
题目描述

Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given1->2->3->4->5->NULLand k =2,

return4->5->1->2->3->NULL.


这个问题,我同学和我说,面试出过问题。

需要小心的点是,k > 链表长度,此时相当于又一个mod过程。

思路不难,两个指针,前后走就行。

/** * 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) {        ListNode *pToEnd = head;        ListNode *pNewEnd = head;        ListNode *pNewHead;        if(head == NULL)            return NULL;        int i = 0;        for(; i < k ;i ++)            {            if(pToEnd->next == NULL)//k大于链表长度的话                pToEnd = head;            else            pToEnd = pToEnd->next;                    }        while(pToEnd->next != NULL)            {            pToEnd = pToEnd->next;            pNewEnd = pNewEnd->next;        }        pToEnd->next = head;        pNewHead = pNewEnd->next;        pNewEnd->next = NULL;        return pNewHead;    }};


原创粉丝点击