LeetCode OJ - Reverse Linked List II
2014-06-07 17:45
323 查看
题目:
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.
解题思路:
先找到需要翻转的起始节点,然后,翻转其后的n - m 个节点。 注意处理翻转的起始节点为head的情况。代码:
/** * 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 *pre_node = NULL, *mid_first = head; for (int i = 1; i < m; i++) { pre_node = mid_first; mid_first = mid_first->next; } ListNode *last = mid_first->next, *pre = mid_first; for (int i = m; i < n; i++) { ListNode *tmp = last->next; last->next = pre; pre = last; last = tmp; } if (pre_node == NULL) { head = pre; mid_first->next = last; } else { pre_node->next = pre; mid_first->next = last; } return head; } };
相关文章推荐
- LeetCode OJ:Reverse Linked List II
- LeetCode OJ - Reverse Linked List II
- LeetCode OJ--Reverse Linked List II
- LeetCode OJ 92. Reverse Linked List II
- LeetCode OJ:Reverse Linked List II(反转链表II)
- leetcode 092 Reverse Linked List II
- 92. Reverse Linked List II
- #36 Reverse Linked List II
- Reverse Linked List II
- 【Reverse Linked List II】cpp
- Reverse Linked List II
- Reverse Linked List II
- [Leetcode] Reverse linked list ii 反转链表
- LeetCode2.2.2 @ Reverse Linked List II 反转链表II D3F2
- leetcode 92: Reverse Linked List II
- [leetcode-92]Reverse Linked List II(c++)
- LeetCode Reverse Linked List II
- reverse-linked-list-ii
- Reverse Linked List II Leetcode92
- LeetCode Reverse Linked List II