您的位置:首页 > 其它

Reverse Linked List II - LeetCode

2015-10-24 11:12 417 查看
Reverse a linked list from position m to n. Do it in-place and in one-pass.

For example:
Given
1->2->3->4->5->NULL
, m = 2 and n = 4,

return
1->4->3->2->5->NULL
.

Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.

思路:只要会了reverse k-group,反转链表再也不用愁了呢!

class Solution {
public:
ListNode* reverseBetween(ListNode* head, int m, int n) {
if (head == NULL || m == n) return head;
ListNode prenode(-1);
prenode.next = head;
ListNode *pre = &prenode, *cur, *nex;
int count = m - 1;
while (count && (pre = pre->next))
count--;
cur = pre->next;
nex = cur->next;
for (int i = 1; i < n - m + 1; i++)
{
cur->next = nex->next;
nex->next = pre->next;
pre->next = nex;
nex = cur->next;
}
return prenode.next;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: