leetcode 25:k個一組翻轉連結串列
阿新 • • 發佈:2018-12-18
建立一個數組,存放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; }