zoukankan      html  css  js  c++  java
  • 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.

    struct ListNode
    {
        int m_nKey;
        ListNode* next; 
    }
    
    class Solution{
        public:
            ListNode* rotateRight(ListNode *head, int k){
                if(!head) return NULL;
                int n = 0;
                ListNode *cur = head;
                while(cur){
                    ++n;
                    cur = cur->next;
                }
                
                k %= n;
                ListNode *fast = head, *slow = head;
                for(int i = 0; i < k; ++i)
                {
                    if(fast)
                        fast = fast->next;
                }
                
                if(!fast) return head;
                while(fast->next){
                    fast = fast->next;
                    slow = slow->next;
                }
                
                fast->next = head;
                fast = slow->next;
                slow->next = NULL;
                return fast;
            }
    };
    怕什么真理无穷,进一寸有一寸的欢喜。---胡适
  • 相关阅读:
    Java SE
    Java SE
    Java SE
    Java SE
    Vocabulary: dockyard
    Vocabulary: Intercept
    Java SE
    MVG
    相关学习
    相机开发
  • 原文地址:https://www.cnblogs.com/hujianglang/p/11421091.html
Copyright © 2011-2022 走看看