1. 程式人生 > >leetcode 25:k個一組翻轉連結串列

leetcode 25:k個一組翻轉連結串列

建立一個數組,存放k個節點,之後進行改變順序即可

 ListNode* reverseKGroup(ListNode* head, int k) {
	if (k == 1)
		return head;
    int i = 0;
    ListNode*l1 = head;
    std::vector<ListNode*>c;
    while (l1!= NULL) {
        c.push_back(l1);
        i++;
        if (i == k)
            break;
        l1 = l1->next;
    }
    if (l1 == NULL)
        return head;
    if (i < k)
        return head;
	ListNode*l2=NULL ;
	if (l1->next != NULL) {
		l2 = l1->next;
	}
	for (int i = 0; i<k; i++) {
		c[i]->next = NULL;
	}
    l1->next = c[k - 2];
    for (int i = k-2; i>=1; i--) {
        c[i]->next = c[i - 1];
    }
    if (l2 == NULL)
        return l1;
    else
        c[0]->next = reverseKGroup(l2, k);
    return l1;
}