/** * 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) { if(head == NULL) { return head; } ListNode * dummyHead = new ListNode(-1); dummyHead->next = head; ListNode * follower = dummyHead; ListNode * faster = dummyHead; while(faster != NULL && follower != NULL) { int i = 0; for(; i < k && faster != NULL; ++i) { faster = faster->next; } if(faster == NULL) { break; } ListNode * temp = faster->next; faster->next = NULL; ListNode * ret = reverseLinkedList(follower->next); follower->next = ret; ListNode * p = follower; while(p->next != NULL) { p = p->next; } p->next = temp; follower = p; faster = p; } return dummyHead->next; } ListNode *reverseLinkedList(ListNode *head) { ListNode * dummyHead = new ListNode(-1); dummyHead->next = head; ListNode * p = dummyHead; ListNode * result = new ListNode(-1); ListNode * q = result; while(p->next != NULL) { while(p->next != NULL && p->next->next != NULL) { p = p->next; } q->next = p->next; p->next = NULL; p = dummyHead; q = q->next; } delete dummyHead; ListNode * ret = result->next; result->next = NULL; delete result; return ret; } };
4/05/2014
Leetcode -- Reverse Nodes in k-Group
Apr.05, 2014 Ugly Solution, can improve
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment