本文主要是介绍Leetcode139: 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.
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* reverseBetween(ListNode* head, int m, int n) {if (head == NULL)return NULL;ListNode *q = NULL;ListNode *p = head;for(int i = 0; i < m - 1; i++){q = p;p = p->next;}ListNode *end = p;ListNode *pPre = p;p = p->next;for(int i = m + 1; i <= n; i++){ListNode *pNext = p->next;p->next = pPre;pPre = p;p = pNext;}end->next = p;if (q)q->next = pPre;elsehead = pPre;return head;}
};
这篇关于Leetcode139: Reverse Linked List II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!