Reverse linked list(逆转从n到m处的单链表)--leetcode
来源:互联网 发布:mac os x10.10镜像 编辑:程序博客网 时间:2024/06/07 04:05
题目描述:
Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:
Given1->2->3->4->5->NULL, m = 2 and n = 4,
return1->4->3->2->5->NULL.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
解题思路:
找到第m个结点,并记录其前继结点,然后依次从m+1开始到n,逆转后续结点,注意在最后的时候,修改原先第m处的链表的next指针。
代码如下:
class Solution {public: ListNode *reverseBetween(ListNode *head, int m, int n) { if (!head || m < 1 || m == n) return head; //前m-1个链表 ListNode *q = NULL; //用q保存第m-1个结点 ListNode *p = head; //让p指向第m个结点 int count = 1; while(count < m && p){ q = p; p = p->next; ++count; } //逆转m到n个结点 ListNode *end = p;//始终指向逆转前的第m个结点 ListNode *pre = p;//可以看为逆置链表的头结点 ListNode *pNext = NULL;//指向p的下一个结点 p = p->next;//(指向m+1处的结点) for (count = m+1; count <= n; ++count){ pNext = p -> next;//保存下一个结点信息 p -> next = pre;//头插法 pre = p;//前移pre p = pNext;//回到初始链表的下一个结点 } /* 结束的时候,end指向逆转前的第m个结点(逆转后,为逆转链表的最后一个结点), pre指向指向逆转后第m个结点(逆转前的第n个结点), p指向原链表的n+1个结点 */ //链接逆转链表和后面的链表 end -> next = p;//这一步,修正了原链表第m个结点后项指针 //如果第m-1个结点为空的话,表示,从head开始逆转 if (q){//不为空,将前m-1个链表和逆转后的链表链接 q -> next = pre; }else{//为空,逆转链表的头结点,就是要求的链表 head = pre; } return head; }};
配图分析:
0 0
- Reverse linked list(逆转从n到m处的单链表)--leetcode
- (LeetCode)Reverse Linked List --- 逆转链表
- 6. Reverse Linked List 逆转单链表
- 逆转链表的一部分 Reverse Linked List II
- 【LeetCode从零单刷】Reverse Linked List
- 逆转链表 Reverse Linked List
- [LeetCode]Reverse Linked List
- [Leetcode] Reverse Linked List
- leetcode Reverse Linked List
- [LeetCode] Reverse Linked List
- [LeetCode]Reverse Linked List
- Leetcode---Reverse Linked List
- [leetcode] Reverse Linked List
- [leetcode]Reverse Linked List
- Leetcode Reverse Linked List
- [leetcode] Reverse Linked List
- leetcode Reverse Linked List
- Reverse Linked List[LeetCode]
- Background Modes in iOS Tutorial
- 每天进步一点点--java多线程
- hdu_1348_Wall(凸包)
- Android CountDownTimer倒计时器的使用
- idea解决编译时出现的未结束的字符文字等错误
- Reverse linked list(逆转从n到m处的单链表)--leetcode
- android 4.0 BLE开发官方文档介绍
- Android UI
- OPC-Server安装 1(matrikon-opc)
- 第9章 结构化分析问题
- NSAttributedString
- 监控运维工具
- 数据列表借用泛型排重方法(Android\Java)
- LeetCode-64.Minimum Path Sum