有一道链表的题目。今天面试别人出了链表的题目都被答出来了,可见这个一般训练过还是能做出来的,就是考虑corner case即可。这里主要是m为1的时候,head就要变了。
class Solution { public: ListNode *reverseBetween(ListNode *head, int m, int n) { ListNode* current = head; ListNode* last = NULL; int i = 1; while (i != m && current != NULL) { last = current; current = current->next; i++; } ListNode* start1 = last; ListNode* start2 = current; last = current; current = current->next; i++; while (i != n+1 && current != NULL) { ListNode* tmp = current->next; current->next = last; last = current; current = tmp; i++; } if (start1 != NULL) { start1->next = last; } else { head = last; } if (start2 != NULL) { start2->next = current; } return head; } };