首页 > 代码库 > LeetCode "Reverse Nodes in k-Group"

LeetCode "Reverse Nodes in k-Group"

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;    }};