首页 > 其他 > 详细

LeetCode "Reverse Nodes in k-Group"

时间:2014-08-06 06:14:10      阅读:374      评论:0      收藏:0      [点我收藏+]

Another list manipulation problem.

class Solution {
public:
    ListNode *reverseKGroup(ListNode *head, int k) {
        if (!head) return head;
        if (!head->next) return head;
        if (k == 1) return head;

        ListNode dum(-1); dum.next = head;
        ListNode *pProb = &dum;
        while (pProb)
        {
            //    Prob    
            ListNode *pPre = pProb;
            int cnt = k;
            while(cnt-- && pProb)    pProb = pProb->next;
            //    Valid? (= k)
            if(pProb)
            {
                ListNode *pEnd = pProb->next;
                
                ListNode *pToConn = pPre;
                ListNode *pOrig = pPre->next;
                for(int i = k; i >= 1; i --)
                {
                    ListNode *p = pToConn;
                    int cnt0 = i;
                    while(cnt0--) p = p->next;
                    pToConn->next = p;
                    pToConn = p;
                    p->next = pOrig;
                }
                pProb = pToConn;
                pToConn->next = pEnd;
            }            
        }
        return dum.next;
    }
};

LeetCode "Reverse Nodes in k-Group",布布扣,bubuko.com

LeetCode "Reverse Nodes in k-Group"

原文:http://www.cnblogs.com/tonix/p/3893605.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!