LeetCode OJ 61. Rotate List

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode OJ 61. Rotate List相关的知识,希望对你有一定的参考价值。

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

解答:

不是很懂这道题的通过率为何如此之低,其实只要考虑三种边界情况就可以了,一是空链表的时候,二是k是链表节点数整数倍的时候,三是k大于链表节点数的时候……

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* rotateRight(struct ListNode* head, int k) {
    int count = 0, i;
    struct ListNode *pNode = head, *tmp;
    
    if(NULL == head)
        return;
    while(NULL != pNode){
        count++;
        pNode = pNode->next;
    }
    pNode = head;
    for(i = 0; i < count - k % count - 1; i++){
        pNode = pNode->next;
    }
    tmp = pNode->next;
    pNode->next = NULL;
    if(NULL == tmp)
        return head;
    pNode = tmp;
    while(NULL != pNode->next){
        pNode = pNode->next;
    }
    pNode->next = head;
    return tmp;
}

 



以上是关于LeetCode OJ 61. Rotate List的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode OJ 061Rotate List

LeetCode OJ 189. Rotate Array

&lt;LeetCode OJ&gt; 189. Rotate Array

#Leetcode# 61. Rotate List

一天一道LeetCode#61. Rotate List

LeetCode 61. Rotate List