Reverse Linked List II
2013-04-29 16:58
274 查看
题目描述如下:
Reverse a linked list from position m to n.
Do it in-place and in one-pass.
For example:
Given
2 and n = 4,
return
Note:
Given m, n satisfy
the following condition:
1 ? m ? n ?
length of list.
可以看出编号是从1开始的,最讨厌这种不是从0开始的了,处理跑的长度的时候超恶心啊;
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.
可以看出编号是从1开始的,最讨厌这种不是从0开始的了,处理跑的长度的时候超恶心啊;
#define ln ListNode class Solution { public: ln* reverseBetween(ln* head,int m,int n) { if ( !head || !head->next || m<1 ) return head; n=n-m+1; ln* guard=new ln(-1); guard->next=head; ln* pPre=guard; while(pPre&&--m) { pPre=pPre->next; } //not enough m nodes; if ( pPre==NULL) { delete guard; return head; } ln* pAfter=pPre->next; while(pAfter&&n--) { pAfter=pAfter->next; } _reverseList(pPre,pAfter); ln* ans=guard->next; delete guard; return ans; } void _reverseList(ln*& pPre,ln* pAfter) { ln* pCur=pPre->next; pPre->next=pAfter; while(pCur!=pAfter) { ln* tmp=pCur->next; pCur->next=pPre->next; pPre->next=pCur; pCur=tmp; } } };
相关文章推荐
- 【Reverse Linked List II】cpp
- Reverse Linked List II
- Leetcode: Reverse Linked List II
- Reverse Linked List II
- [Leetcode]Reverse Linked List II
- LeetCode--Reverse Linked List II
- 92. Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- [LeetCode92]Reverse Linked List II
- [leetcode][list][two pointers] Reverse Linked List II
- [Leetcode]92. Reverse Linked List II
- LeetCode-92-Reverse Linked List II 链表反转 各种边界条件
- 92. Reverse Linked List II
- Reverse Linked List II
- ( Leetcode 92 ) Reverse Linked List II
- LeetCode-Reverse Linked List II
- LeetCode: Reverse Linked List II
- 92. Reverse Linked List II
- leetcode Reverse Linked List II