现在的位置: 首页 > 综合 > 正文

LeetCode–Reverse Nodes in k-Group

2018年10月01日 ⁄ 综合 ⁄ 共 742字 ⁄ 字号 评论关闭
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *reverseKGroup(ListNode *head, int k) {
        ListNode *dummy = new ListNode(-1);
        dummy->next = head;
        ListNode *begin = dummy;
        ListNode *end   = dummy;
        ListNode *newhead = new ListNode(-1);
        ListNode *newtmp = newhead;
        
        if( head == NULL || k<=1 )
            return head;
  
        begin = head;
        while(begin)
        {
            int i=0;
            end = begin;
            //begin = end->next;
            for( i=0; i<k-1; i++)
            {
                if(end)
                    end = end->next;
                else
                    break;
            }
            if(i == k-1 && end != NULL)
            {
                ListNode *tmp = begin;
                ListNode *endnext = end->next;
                while( tmp != endnext )
                {
                    ListNode *pnext = tmp->next;
                    tmp->next = newtmp->next;
                    newtmp->next = tmp;
                    tmp = pnext;
                }
                newtmp = begin;
                begin  = endnext;
            }
            else
            {
                newtmp->next = begin;
                break;
            }
        }
        return newhead->next;
        
    }
};
两个小时,最后不行了才使用vs2010单 步调试过了,指针很蛋疼

抱歉!评论已关闭.