LeetCode92-反转链表 II(C++实现)
2019-05-26 21:41
435 查看
1.题目描述
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
1 ≤ m ≤ n ≤ 链表长度。
示例:
[code]输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL
2.代码实现
[code]/** * 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 == nullptr || m == n) return head; if(m == 1) { int cnt = 0; ListNode* myhead = new ListNode(-1); myhead->next = head; ListNode* cur = head; while(cnt < (n - m) && cur->next) { ListNode *t = cur->next; cur->next = t->next; t->next = myhead->next; myhead->next = t; cnt++; } head = myhead->next; delete myhead; } else { ListNode* pre = head; for(int i = 1; i < m-1; i++) pre = pre->next; ListNode* cur = pre->next; for(int i = m; i < n; i++) { ListNode *t = cur->next; cur->next = t->next; t->next = pre->next; pre->next = t; } } return head; } };
相关文章推荐
- LeetCode [92] 反转链表 II
- C实现 LeetCode->Reverse Linked List II (双指针大法)(单链表反转)
- LeetCode-92-Reverse Linked List II 链表反转 各种边界条件
- [leetcode]Reverse Linked List II (反转链表值 C语言实现)
- LeetCode 206: 反转链表 C++实现
- [LeetCode-92] Reverse Linked List II(反转指定区间链表)
- 编程集训第2天:LeetCode--环形链表2(142)及单链表反转(206)C++和python代码实现
- leetcode206/92---Reverse Linked List I/II(反转链表)
- 【LeetCode-面试算法经典-Java实现】【092-Reverse Linked List II(反转单链表II)】
- leetcode_c++:链表:Reverse Linked List II (092)
- (Leetcode)92. Reverse Linked List II ——反转单链表
- LeetCode-Reverse Linked List II(反转链表)
- LeetCode 92 Reverse Linked List II (Python详解及实现)
- LeetCode 之 Contains Duplicate I II III — C++ 实现
- C++实现链表逆序打印、链表反转
- leetcode之24. Swap Nodes in Pairs(C++实现&链表实现和整体测试)
- C++递归与非递归实现链表的反转
- LeetCode 876: 链表的中间结点 C++实现
- 【leetcode】【单链表】【92】Reverse Linked List II
- c++实现链表反转