LeetCode.61

  仔细一想,其实还可以再优化时间复杂度,不过要考虑很多边界情况,懒得考虑了:

class Solution {
public:
    ListNode* rotateRight(ListNode* head, int k) {
        int size = 0;
        ListNode* p = head;
        if (!p) return NULL;
        while (p)
        {
            p = p->next;
            size++;
        }
        
        p = head;
        k %= size;
        while (k--)
        {
            ListNode* q;
            while (p != NULL && p->next != NULL)
            {
                q = p;
                p = p->next;
            }
            
            p->next = head;
            q->next = NULL;
            head = p;
        }
        return head;
    }
};

  

原文地址:https://www.cnblogs.com/darkchii/p/13566934.html