92. Reverse Linked List II
2018-03-01 20:39
267 查看
Reverse a linked list from position m to n. Do it in-place and in one-pass.For example:
Given
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
class Solution {
public:
ListNode* reverseBetween(ListNode* head, int m, int n) {
if(head == NULL || head->next == NULL || m == n) return head;
if(n<m) return NULL;
ListNode * p = head;
ListNode * tmp_head = new ListNode(0);
tmp_head->next = p;
ListNode * pre = tmp_head;
int count = m - 1;
while(count&&p)
{
pre = p;
p = p->next;
--count;
}
if (p == NULL) return NULL;
count = n-m;
ListNode * next_node = p->next;
ListNode * first_reverse_node = p ;
while(count&&next_node)
{
cout<<next_node->val<<"##"<<endl;
ListNode * tmp = pre->next;
ListNode * next = next_node->next;
pre->next = next_node;
first_reverse_node->next = next;
next_node->next = tmp;
next_node = next;
--count;
}
return tmp_head->next;
}
};
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.
class Solution {
public:
ListNode* reverseBetween(ListNode* head, int m, int n) {
if(head == NULL || head->next == NULL || m == n) return head;
if(n<m) return NULL;
ListNode * p = head;
ListNode * tmp_head = new ListNode(0);
tmp_head->next = p;
ListNode * pre = tmp_head;
int count = m - 1;
while(count&&p)
{
pre = p;
p = p->next;
--count;
}
if (p == NULL) return NULL;
count = n-m;
ListNode * next_node = p->next;
ListNode * first_reverse_node = p ;
while(count&&next_node)
{
cout<<next_node->val<<"##"<<endl;
ListNode * tmp = pre->next;
ListNode * next = next_node->next;
pre->next = next_node;
first_reverse_node->next = next;
next_node->next = tmp;
next_node = next;
--count;
}
return tmp_head->next;
}
};
相关文章推荐
- [leetcode] 【链表】92. Reverse Linked List II
- 92. Reverse Linked List II
- 92. Reverse Linked List II
- [leetcode] 92. Reverse Linked List II 解题报告
- Leetcode 92. Reverse Linked List II
- Leetcode 92. Reverse Linked List II 翻转链表2 解题报告
- LeetCode 92. Reverse Linked List II
- leetcode - 92.Reverse Linked List II
- 92. Reverse Linked List II
- 92. Reverse Linked List II
- 92. Reverse Linked List II
- leetcode题解-92. Reverse Linked List II
- [LeetCode] 92. Reverse Linked List II
- leetcode:92. Reverse Linked List II(Java)解答
- LeetCode 92. Reverse Linked List II
- [LeetCode]206. Reverse Linked List&92. Reverse Linked List II
- LeetCode-92. Reverse Linked List II
- LeetCode 92. Reverse Linked List II
- LeetCode 92. Reverse Linked List II ***** 虚拟头结点
- LeetCode 92. Reverse Linked List II