92. Reverse Linked List II(链表局部逆序**)
2017-02-21 15:32
375 查看
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.
此问题看似简单,实际很麻烦,如果不使用二级指针,那么如果链表仅有两项,并且要求m=1,n=2,那么我们无从存储prev,还要考虑多种情况。使用二级指针可以简化:
class Solution { public: ListNode* reverseBetween(ListNode* head, int m, int n) { if(head == NULL || m == n) return head; ListNode** pp = &head; for(int i=1; i<m; ++i) pp = &((*pp)->next); ListNode* end = *pp; ListNode* prev = NULL; for(int i=m; i<=n; ++i){ ListNode* cur = (*pp); (*pp) = (*pp)->next; cur->next = prev; prev = cur; } end->next = *pp; *pp = prev; return head; } };
相关文章推荐
- (Leetcode)92. Reverse Linked List II ——反转单链表
- leetcode 92. Reverse Linked List II 反转链表 + 头插入反转链表(或者使用栈)
- leetcode——Reverse Linked List II 选择链表中部分节点逆序(AC)
- 92. Reverse Linked List II【遍历一遍就反转链表】
- Leetcode 92. Reverse Linked List II 翻转链表2 解题报告
- leetcode之92. Reverse Linked List II(C++读错题版本,交换一个链表中指定的两个位置上的元素)
- leetCode 92.Reverse Linked List II (反转链表II) 解题思路和方法
- Reverse Linked List II 局部翻转链表@LeetCode
- LeetCode 92. Reverse Linked List II(翻转链表)
- [leetcode] 【链表】92. Reverse Linked List II
- leetcode——Reverse Linked List II 选择链表中部分节点逆序(AC)
- 部分翻转链表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】92. Reverse Linked List II
- [LeetCode]92. Reverse Linked List II
- leetcode:92. Reverse Linked List II(Java)解答
- [leetcode] Reverse Linked List II 链表反转