[leetcode]Reverse Linked List II
有一道链表的题目。今天面试别人出了链表的题目都被答出来了,可见这个一般训练过还是能做出来的,就是考虑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;
}
};

浙公网安备 33010602011771号