leetcode Reverse Linked List II C++
2016-10-05 01:46
417 查看
关于这道题,discuss里面有很短的只有九行就AC的方法,确实比较精妙,这里给出一种比较容易的理解的解法,先将区间内的部分翻转,然后将翻转后的部分与其他部分按原来的顺序串联起来,但需要注意的是区间内是否包含头结点。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* pre = NULL; ListNode* next; while(head != NULL) { next = head -> next; head -> next = pre; pre = head; head = next; } return pre; } ListNode* reverseBetween(ListNode* head, int m, int n) { ListNode* pre_reverse = NULL; //指示翻转部分的前一个节点 ListNode* iter = head; int temp_m = m; while(--temp_m) { pre_reverse = iter; iter = iter -> next; } ListNode* reverse_head = iter; //指示翻转部分的头结点 for(int i = m; i < n; i++) { iter = iter -> next; } ListNode* next_reverse = iter -> next; //指示翻转部分后的节点 iter -> next = NULL; // 完成待翻转部分的剥离 ListNode* new_head = reverseList(reverse_head);//翻转待翻转部分 iter = new_head; while(iter -> next != NULL) iter = iter -> next; ListNode* new_tail = iter; if(pre_reverse == NULL) //翻转部分包含原来的头结点 { new_tail -> next = next_reverse; //重新连接 return new_head; } else { pre_reverse -> next = new_head; new_tail -> next = next_reverse; return head; } } };
相关文章推荐
- leetcode 92 Reverse Linked List II C++
- leetcode之92. Reverse Linked List II(C++读错题版本,交换一个链表中指定的两个位置上的元素)
- LeetCode(92): Reverse Linked List II (C++)
- leetcode_c++:链表:Reverse Linked List II (092)
- 【C++】【LeetCode】92. Reverse Linked List II
- [leetcode-92]Reverse Linked List II(c++)
- [C++]LeetCode: 62 Reverse Linked List II
- LeetCode:Reverse Linked List II
- [Leetcode] Reverse Linked List II
- [leetcode]Reverse Linked List II
- [Leetcode]Reverse Linked List II
- leetcode Reverse Linked List II
- LeetCode: Reverse Linked List II
- leetcode 76: Reverse Linked List II
- leetcode 41: Reverse Linked List II
- [LeetCode] Reverse Linked List II
- LeetCode-Reverse Linked List II
- LeetCode Online Judge 题目C# 练习 - Reverse Linked List II
- LeetCode —— Reverse Linked List II
- [leetcode] Reverse Linked List II