[LeetCode] 92. Reverse Linked List II
2017-12-10 18:11
260 查看
92. Reverse Linked List II (翻转链表II)
Reverse Linked List II 翻转链表II题目翻译
解题方法
代码
1. 题目翻译
将给定链表的位置m到n之间的结点翻转。要求原地操作,并且只能遍历一次。假设1 ≤ m ≤ n ≤ 链表长度例子:
Given 1->2->3->4->5->NULL, m = 2 and n = 4, return 1->4->3->2->5->NULL
2. 解题方法
首先找到第m个结点的前驱,然后按照206. Reverse Linked List翻转链表的操作,将m到n之间的结点翻转。需要考虑到头结点需要被翻转,为了避免分类讨论,创建一个指向头结点的flag结点,以简化操作。3. 代码
//Runtime: 3ms class Solution { public: ListNode* reverseBetween(ListNode* head, int m, int n) { if(!head) return head; ListNode* flag = new ListNode(0); flag->next = head; int i = 1; ListNode* p = flag; while(p&&i<m){ p = p->next; i++; } ListNode* q = p->next; i = 0; while(i<n-m){ ListNode* temp = p->next; p->next = q->next; q->next = q->next->next; p->next->next = temp; i++; } return flag->next; } };
相关文章推荐
- 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 (Medium) (cpp)
- [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 反转链表 + 头插入反转链表(或者使用栈)
- LeetCode92. 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