本文主要是介绍leetcode 092 Reverse Linked List II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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.
Subscribe to see which companies asked this question
class Solution {
public:ListNode* reverseBetween(ListNode* head, int m, int n) {ListNode *lm=head, *pre=NULL, *ln=head, *temp=head;for(int i=1; i<=n; i++) {if(i < m) {pre=lm;lm=pre->next;}ln=temp;temp=temp->next;}ListNode *next=ln->next;for(int i=m; i<=n; i++) {ListNode *lm_next = lm->next;lm->next=next;next = lm;lm = lm_next;}if(pre!=NULL) {pre->next=next;} else {head = next;}return head;}
}
这篇关于leetcode 092 Reverse Linked List II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!