【C++】【LeetCode】92. Reverse Linked List II
2017-08-05 15:43
405 查看
题目
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 (m >= n) { return head; } else if (m <= 0) { n = n + (1 - m); m = 1; } int i = 1; ListNode *index = head; vector<int> subArray; while (i < m) { if (index->next == NULL) { return head; } else { index = index->next; i++; } } ListNode *preIndex = index; while (i <= n) { if (index == NULL) { break; } subArray.push_back(index->val); index = index->next; i++; } for (int j = subArray.size() - 1; j >= 0; j--) { preIndex->val = subArray[j]; preIndex = preIndex->next; } return head; } };
相关文章推荐
- leetcode之92. Reverse Linked List II(C++读错题版本,交换一个链表中指定的两个位置上的元素)
- LeetCode --- 92. 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 反转链表 + 头插入反转链表(或者使用栈)
- leetcode题解-92. 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 翻转链表2 解题报告
- leetcode92. Reverse Linked List II
- [LeetCode] 92. Reverse Linked List II
- [leetcode] 92.Reverse Linked List II
- leetcode_c++:链表:Reverse Linked List II (092)
- 【Leetcode】92. Reverse Linked List II && 206. Reverse Linked List
- leetcode-92. Reverse Linked List II
- [Leetcode] 92. Reverse Linked List II
- [Leetcode] 92. Reverse Linked List II
- Leetcode 92. Reverse Linked List II